Full Code of 007gzs/dingtalk-sdk for AI

master 7979da2e259f cached
89 files
3.3 MB
876.7k tokens
4864 symbols
1 requests
Download .txt
Showing preview only (4,194K chars total). Download the full file or copy to clipboard to get everything.
Repository: 007gzs/dingtalk-sdk
Branch: master
Commit: 7979da2e259f
Files: 89
Total size: 3.3 MB

Directory structure:
gitextract_5_1r8j_z/

├── .bumpversion.cfg
├── .gitignore
├── .readthedocs.yml
├── .travis.yml
├── LICENSE
├── MANIFEST.in
├── README.rst
├── dev-requirements.txt
├── dingtalk/
│   ├── __init__.py
│   ├── client/
│   │   ├── __init__.py
│   │   ├── api/
│   │   │   ├── __init__.py
│   │   │   ├── attendance.py
│   │   │   ├── base.py
│   │   │   ├── blackboard.py
│   │   │   ├── bpms.py
│   │   │   ├── calendar.py
│   │   │   ├── callback.py
│   │   │   ├── chat.py
│   │   │   ├── checkin.py
│   │   │   ├── cspace.py
│   │   │   ├── department.py
│   │   │   ├── employeerm.py
│   │   │   ├── ext.py
│   │   │   ├── extcontact.py
│   │   │   ├── health.py
│   │   │   ├── message.py
│   │   │   ├── microapp.py
│   │   │   ├── report.py
│   │   │   ├── role.py
│   │   │   ├── taobao.py
│   │   │   ├── user.py
│   │   │   └── workrecord.py
│   │   ├── base.py
│   │   ├── channel.py
│   │   └── isv.py
│   ├── core/
│   │   ├── __init__.py
│   │   ├── constants.py
│   │   ├── exceptions.py
│   │   └── utils.py
│   ├── crypto/
│   │   ├── __init__.py
│   │   ├── base.py
│   │   ├── cryptography.py
│   │   ├── pkcs7.py
│   │   └── pycrypto.py
│   ├── model/
│   │   ├── __init__.py
│   │   ├── field.py
│   │   └── message.py
│   └── storage/
│       ├── __init__.py
│       ├── cache.py
│       ├── kvstorage.py
│       └── memorystorage.py
├── docs/
│   ├── Makefile
│   ├── changelog.rst
│   ├── client/
│   │   ├── api/
│   │   │   ├── attendance.rst
│   │   │   ├── blackboard.rst
│   │   │   ├── bpms.rst
│   │   │   ├── calendar.rst
│   │   │   ├── callback.rst
│   │   │   ├── chat.rst
│   │   │   ├── checkin.rst
│   │   │   ├── cspace.rst
│   │   │   ├── department.rst
│   │   │   ├── employeerm.rst
│   │   │   ├── ext.rst
│   │   │   ├── extcontact.rst
│   │   │   ├── health.rst
│   │   │   ├── message.rst
│   │   │   ├── microapp.rst
│   │   │   ├── report.rst
│   │   │   ├── role.rst
│   │   │   ├── taobao.rst
│   │   │   ├── user.rst
│   │   │   └── workrecord.rst
│   │   ├── index.rst
│   │   └── isv.rst
│   ├── conf.py
│   ├── index.rst
│   ├── install.rst
│   └── model/
│       ├── field.rst
│       └── message.rst
├── pytest.ini
├── requirements.txt
├── setup.cfg
├── setup.py
├── tests/
│   ├── test_crypto.py
│   ├── test_message.py
│   ├── test_storage.py
│   └── test_utils.py
└── tox.ini

================================================
FILE CONTENTS
================================================

================================================
FILE: .bumpversion.cfg
================================================
[bumpversion]
files = setup.py dingtalk/__init__.py
commit = True
tag = True
current_version = 1.3.8


================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
.hypothesis/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# IPython Notebook
.ipynb_checkpoints

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# dotenv
.env

# virtualenv
venv/
ENV/

# Spyder project settings
.spyderproject

# Rope project settings
.ropeproject
.pytest_cache

.idea/

.DS_Store



================================================
FILE: .readthedocs.yml
================================================
formats:
  - none
python:
  version: 3
  pip_install: true
  extra_requirements:
    - cryptography


================================================
FILE: .travis.yml
================================================
language: python

# Use container-based infrastructure
sudo: false

matrix:
  include:
    - env: TOX_ENV=py27-cryptography
      python: 2.7
    - env: TOX_ENV=py27-pycrypto
      python: 2.7
    - env: TOX_ENV=py34-cryptography
      python: 3.4
    - env: TOX_ENV=py34-pycrypto
      python: 3.4
    - env: TOX_ENV=py35-cryptography
      python: 3.5
    - env: TOX_ENV=py35-pycrypto
      python: 3.5
    - env: TOX_ENV=py36-cryptography
      python: 3.6
    - env: TOX_ENV=py36-pycrypto
      python: 3.6
    - env: TOX_ENV=pypy-cryptography
      python: "pypy"
    - env: TOX_ENV=pypy3-cryptography
      python: "pypy3"

services:
  - redis-server
  - memcached

cache:
  directories:
    - $HOME/.cache/pip

install:
  - pip install tox
  - pip install "flake8>=3.7"

before_script:
  - "flake8 ."

script:
  tox -e $TOX_ENV

after_success:
  - |
    if [[ "${TRAVIS_TAG:-}" != "" && "$TOX_ENV" == "py36-cryptography" ]]; then
      python3.6 setup.py sdist bdist_wheel;
      python3.6 -m pip install twine;
      python3.6 -m twine upload --skip-existing dist/*;
    fi


================================================
FILE: LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    <program>  Copyright (C) <year>  <name of author>
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.


================================================
FILE: MANIFEST.in
================================================
include README.md
include requirements.txt

================================================
FILE: README.rst
================================================
#######################
DingTalk Sdk for Python
#######################
.. image:: https://travis-ci.org/007gzs/dingtalk-sdk.svg?branch=master
       :target: https://travis-ci.org/007gzs/dingtalk-sdk
.. image:: https://img.shields.io/pypi/v/dingtalk-sdk.svg
       :target: https://pypi.org/project/dingtalk-sdk

钉钉开放平台第三方 Python SDK。
`【阅读文档】 <http://dingtalk-sdk.readthedocs.io/zh_CN/latest/>`_。

********
功能特性
********
+ 企业内部开发接入api
+ 应用服务商(ISV)接入api

********
安装
********

目前 dingtalk-sdk 支持的 Python 环境有 2.7, 3.4, 3.5, 3.6 和 pypy。

dingtalk-sdk 消息加解密同时兼容 cryptography 和 PyCrypto, 优先使用 cryptography 库。
可先自行安装 cryptography 或者 PyCrypto 库::

    # 安装 cryptography
    pip install cryptography>=0.8.2
    # 或者安装 PyCrypto
    pip install pycrypto>=2.6.1

为了简化安装过程,推荐使用 pip 进行安装

.. code-block:: bash

    pip install dingtalk-sdk
    # with cryptography
    pip install dingtalk-sdk[cryptography]
    # with pycrypto
    pip install dingtalk-sdk[pycrypto]

升级 dingtalk-sdk 到新版本::

    pip install -U dingtalk-sdk

****************
使用示例
****************

django 示例 https://github.com/007gzs/dingtalk-django-example


================================================
FILE: dev-requirements.txt
================================================
-r requirements.txt
pytest
redis
pymemcache



================================================
FILE: dingtalk/__init__.py
================================================
from __future__ import absolute_import, unicode_literals

import logging

from dingtalk.client import SecretClient, AppKeyClient  # NOQA
from dingtalk.client.isv import ISVClient  # NOQA
from dingtalk.core.exceptions import DingTalkClientException, DingTalkException  # NOQA

__version__ = '1.3.8'
__author__ = '007gzs'

# Set default logging handler to avoid "No handler found" warnings.
try:  # Python 2.7+
    from logging import NullHandler
except ImportError:
    class NullHandler(logging.Handler):
        def emit(self, record):
            pass

logging.getLogger(__name__).addHandler(NullHandler())


================================================
FILE: dingtalk/client/__init__.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

import logging

import time

from dingtalk.client import api
from dingtalk.client.api.taobao import TaobaoMixin
from dingtalk.client.base import BaseClient
from dingtalk.core.utils import DingTalkSigner, random_string
from dingtalk.crypto import DingTalkCrypto
from dingtalk.storage.cache import DingTalkCache

logger = logging.getLogger(__name__)


class DingTalkClient(BaseClient, TaobaoMixin):

    attendance = api.Attendance()
    blackboard = api.BlackBoard()
    bpms = api.Bpms()
    calendar = api.Calendar()
    callback = api.Callback()
    chat = api.Chat()
    checkin = api.Checkin()
    cspace = api.Cspace()
    department = api.Department()
    ext = api.Ext()
    extcontact = api.ExtContact()
    employeerm = api.Employeerm()
    health = api.Health()
    message = api.Message()
    microapp = api.MicroApp()
    report = api.Report()
    role = api.Role()
    user = api.User()
    workrecord = api.WorkRecord()

    def __init__(self, corp_id, prefix='client', storage=None, timeout=None, auto_retry=True):
        super(DingTalkClient, self).__init__(storage, timeout, auto_retry)
        self.corp_id = corp_id
        self.cache = DingTalkCache(self.storage, "%s:%s" % (prefix, self.get_access_token_key()))

    def get_access_token_key(self):
        return "corp_id:%s" % self.corp_id

    @property
    def access_token(self):
        token = self.cache.access_token.get()
        if token is None:
            ret = self.get_access_token()
            token = ret['access_token']
            expires_in = ret.get('expires_in', 7200)
            self.cache.access_token.set(value=token, ttl=expires_in)
        return token

    @property
    def jsapi_ticket(self):
        ticket = self.cache.jsapi_ticket.get()
        if ticket is None:
            ret = self.get_jsapi_ticket()
            ticket = ret['ticket']
            expires_in = ret.get('expires_in', 7200)
            self.cache.jsapi_ticket.set(value=ticket, ttl=expires_in)
        return ticket

    def get_jsapi_params(self, url, noncestr=None, timestamp=None):
        if not noncestr:
            noncestr = random_string()
        if timestamp is None:
            timestamp = int(time.time() * 1000)
        data = [
            'noncestr={noncestr}'.format(noncestr=noncestr),
            'jsapi_ticket={ticket}'.format(ticket=self.jsapi_ticket),
            'timestamp={timestamp}'.format(timestamp=timestamp),
            'url={url}'.format(url=url),
        ]
        signer = DingTalkSigner(delimiter=b'&')
        signer.add_data(*data)

        ret = {
            'corpId': self.corp_id,
            'timeStamp': timestamp,
            'nonceStr': noncestr,
            'signature': signer.signature
        }
        return ret

    def _handle_pre_request(self, method, uri, kwargs):
        if 'access_token=' in uri or 'access_token' in kwargs.get('params', {}):
            raise ValueError("uri参数中不允许有access_token: " + uri)
        uri = '%s%saccess_token=%s' % (uri, '&' if '?' in uri else '?', self.access_token)
        return method, uri, kwargs

    def _handle_pre_top_request(self, params, uri):
        if 'session=' in uri or 'session' in params:
            raise ValueError("uri参数中不允许有session: " + uri)
        params['session'] = self.access_token

        return super(DingTalkClient, self)._handle_pre_top_request(params, uri)

    def _handle_request_except(self, e, func, *args, **kwargs):
        if e.errcode in (33001, 40001, 42001, 40014):
            self.cache.access_token.delete()
            if self.auto_retry:
                return func(*args, **kwargs)
        raise e

    def get_jsapi_ticket(self):
        return self.get('/get_jsapi_ticket')

    def get_access_token(self):
        raise NotImplementedError


class SecretClient(DingTalkClient):

    def __init__(self, corp_id, corp_secret, token=None, aes_key=None, storage=None, timeout=None, auto_retry=True):
        super(SecretClient, self).__init__(corp_id, 'secret:'+corp_id, storage, timeout, auto_retry)
        self.corp_secret = corp_secret
        self.crypto = DingTalkCrypto(token, aes_key, corp_id)

    def get_access_token(self):
        return self._request(
            'GET',
            '/gettoken',
            params={'corpid': self.corp_id, 'corpsecret': self.corp_secret}
        )


class AppKeyClient(DingTalkClient):

    def __init__(self, corp_id, app_key, app_secret, token=None, aes_key=None, storage=None, timeout=None,
                 auto_retry=True):
        self.app_key = app_key
        self.app_secret = app_secret
        super(AppKeyClient, self).__init__(corp_id, 'secret:' + corp_id, storage, timeout, auto_retry)
        self.crypto = DingTalkCrypto(token, aes_key, corp_id)

    def get_access_token_key(self):
        return "app_key:%s" % self.app_key

    def get_access_token(self):
        return self._request(
            'GET',
            '/gettoken',
            params={'appkey': self.app_key, 'appsecret': self.app_secret}
        )


================================================
FILE: dingtalk/client/api/__init__.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from dingtalk.client.api.attendance import Attendance  # NOQA
from dingtalk.client.api.blackboard import BlackBoard  # NOQA
from dingtalk.client.api.bpms import Bpms  # NOQA
from dingtalk.client.api.calendar import Calendar  # NOQA
from dingtalk.client.api.callback import Callback  # NOQA
from dingtalk.client.api.chat import Chat  # NOQA
from dingtalk.client.api.checkin import Checkin  # NOQA
from dingtalk.client.api.cspace import Cspace  # NOQA
from dingtalk.client.api.department import Department  # NOQA
from dingtalk.client.api.ext import Ext  # NOQA
from dingtalk.client.api.extcontact import ExtContact  # NOQA
from dingtalk.client.api.employeerm import Employeerm  # NOQA
from dingtalk.client.api.health import Health  # NOQA
from dingtalk.client.api.message import Message  # NOQA
from dingtalk.client.api.microapp import MicroApp  # NOQA
from dingtalk.client.api.report import Report  # NOQA
from dingtalk.client.api.role import Role  # NOQA
from dingtalk.client.api.user import User  # NOQA
from dingtalk.client.api.workrecord import WorkRecord  # NOQA


================================================
FILE: dingtalk/client/api/attendance.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

import time
import datetime

from dingtalk.client.api.base import DingTalkBaseAPI


class Attendance(DingTalkBaseAPI):

    DATE_TIME_FORMAT = '%Y-%m-%d %H:%M:%S'

    def list_record(self, user_ids, check_date_from, check_date_to):
        """
        考勤打卡记录开放

        :param user_ids: 企业内的员工id列表,最多不能超过50个
        :param check_date_from: 查询考勤打卡记录的起始工作日
        :param check_date_to: 查询考勤打卡记录的结束工作日。注意,起始与结束工作日最多相隔7天
        :return:
        """
        if isinstance(check_date_from, (datetime.date, datetime.datetime)):
            check_date_from = check_date_from.strftime(self.DATE_TIME_FORMAT)
        if isinstance(check_date_to, (datetime.date, datetime.datetime)):
            check_date_to = check_date_to.strftime(self.DATE_TIME_FORMAT)

        return self._post(
            '/attendance/listRecord',
            {
                "userIds": user_ids,
                "checkDateFrom": check_date_from,
                "checkDateTo": check_date_to
            },
            result_processor=lambda x: x['recordresult']
        )

    def list(self, work_date_from, work_date_to, user_ids=(), offset=0, limit=50):
        """
        考勤打卡数据开放

        :param work_date_from: 查询考勤打卡记录的起始工作日
        :param work_date_to: 查询考勤打卡记录的结束工作日
        :param user_ids: 员工在企业内的UserID列表,企业用来唯一标识用户的字段
        :param offset: 表示获取考勤数据的起始点,第一次传0,如果还有多余数据,下次获取传的offset值为之前的offset+limit
        :param limit: 表示获取考勤数据的条数,最大不能超过50条
        :return:
        """
        if isinstance(work_date_from, (datetime.date, datetime.datetime)):
            work_date_from = work_date_from.strftime(self.DATE_TIME_FORMAT)
        if isinstance(work_date_to, (datetime.date, datetime.datetime)):
            work_date_to = work_date_to.strftime(self.DATE_TIME_FORMAT)

        return self._post(
            '/attendance/list',
            {
                "workDateFrom": work_date_from,
                "workDateTo": work_date_to,
                "userIdList": user_ids,
                "offset": offset,
                "limit": limit
            }
        )

    def listschedule(self, work_date, offset=0, size=200):
        """
        考勤排班信息按天全量查询接

        :param work_date: 排班时间
        :param offset: 偏移位置
        :param size: 分页大小,最大200
        :return:
        """
        if isinstance(work_date, (datetime.date, datetime.datetime)):
            work_date = work_date.strftime(self.DATE_TIME_FORMAT)
        return self._top_request(
            'dingtalk.smartwork.attends.listschedule',
            {
                "work_date": work_date,
                "offset": offset,
                "size": size
            }
        )

    def getsimplegroups(self, offset=0, size=10):
        """
        获取考勤组列表详情

        :param offset: 偏移位置
        :param size: 分页大小,最大10
        :return:
        """
        return self._top_request(
            'dingtalk.smartwork.attends.getsimplegroups',
            {
                "offset": offset,
                "size": size
            }
        )

    def getleaveapproveduration(self, userid, from_date, to_date):
        """
        计算请假时长

        :param userid: 员工在企业内的UserID,企业用来唯一标识用户的字段。
        :param from_date: 请假开始时间
        :param to_date: 请假结束时间
        :return: 请假时长(单位分钟)
        """
        if isinstance(from_date, (datetime.date, datetime.datetime)):
            from_date = from_date.strftime(self.DATE_TIME_FORMAT)
        if isinstance(to_date, (datetime.date, datetime.datetime)):
            to_date = to_date.strftime(self.DATE_TIME_FORMAT)

        return self._top_request(
            'dingtalk.smartwork.attends.getleaveapproveduration',
            {
                "userid": userid,
                "from_date": from_date,
                "to_date": to_date
            },
            result_processor=lambda x: x['duration_in_minutes']
        )

    def getleavestatus(self, userid_list, start_time, end_time, offset=0, size=20):
        """
        请假状态查询接口
        该接口用于查询指定企业下的指定用户在指定时间段内的请假状态

        :param userid_list: 待查询用户id列表,支持最多100个用户的批量查询
        :param start_time: 开始时间 ,时间戳,支持最多180天的查询
        :param end_time: 结束时间,时间戳,支持最多180天的查询
        :param offset: 分页偏移,非负整数
        :param size: 分页大小,正整数,最大20
        """
        if isinstance(start_time, (datetime.date, datetime.datetime)):
            start_time = int(time.mktime(start_time.timetuple()) * 1000)
        if isinstance(end_time, (datetime.date, datetime.datetime)):
            end_time = int(time.mktime(end_time.timetuple()) * 1000)
        return self._top_request(
            "dingtalk.oapi.attendance.getleavestatus",
            {
                "userid_list": userid_list,
                "start_time": start_time,
                "end_time": end_time,
                "offset": offset,
                "size": size
            }
        )

    def getusergroup(self, userid):
        """
        获取用户考勤组

        :param userid: 员工在企业内的UserID,企业用来唯一标识用户的字段。
        :return:
        """
        return self._top_request(
            'dingtalk.smartwork.attends.getusergroup',
            {"userid": userid}
        )


================================================
FILE: dingtalk/client/api/base.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals


class DingTalkBaseAPI(object):

    API_BASE_URL = None

    def __init__(self, client=None):
        self._client = client

    def _get(self, url, params=None, **kwargs):
        if self.API_BASE_URL:
            kwargs['api_base_url'] = self.API_BASE_URL
        return self._client.get(url, params, **kwargs)

    def _post(self, url, data=None, params=None, **kwargs):
        if self.API_BASE_URL:
            kwargs['api_base_url'] = self.API_BASE_URL
        return self._client.post(url, data, params, **kwargs)

    def _top_request(self, method, params=None, format_='json', v='2.0',
                     simplify='false', partner_id=None, url=None, **kwargs):
        if self.API_BASE_URL:
            kwargs['api_base_url'] = self.API_BASE_URL
        return self._client.top_request(method, params, format_, v, simplify, partner_id, url, **kwargs)

    @property
    def corp_id(self):
        return self._client.corp_id


================================================
FILE: dingtalk/client/api/blackboard.py
================================================
# encoding: utf-8
from __future__ import absolute_import, unicode_literals

from dingtalk.client.api.base import DingTalkBaseAPI


class BlackBoard(DingTalkBaseAPI):

    def listtopten(self, userid):
        """
        列出用户的公告列表

        :param userid: 用户id
        """
        return self._top_request(
            "dingtalk.oapi.blackboard.listtopten",
            {"userid": userid}
        )


================================================
FILE: dingtalk/client/api/bpms.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

import datetime
import time

import six
from dingtalk.client.api.base import DingTalkBaseAPI
from dingtalk.core.utils import to_text
from optionaldict import optionaldict


class Bpms(DingTalkBaseAPI):

    def process_copy(self, agent_id, process_code, biz_category_id=None, process_name=None, description=None):
        """
        复制审批流

        :param agent_id: 企业微应用标识
        :param process_code: 审批流的唯一码
        :param biz_category_id: 业务分类标识
        :param process_name: 审批流名称
        :param description: 审批流描述
        :return:
        """

        return self._top_request(
            'dingtalk.smartwork.bpms.process.copy',
            optionaldict({
                'agent_id': agent_id,
                'process_code': process_code,
                'biz_category_id': biz_category_id,
                'process_name': process_name,
                'description': description
            })
        )

    def process_sync(self, agent_id, src_process_code, target_process_code, biz_category_id=None, process_name=None):
        """
        更新审批流

        :param agent_id: 企业微应用标识
        :param src_process_code: 源审批流的唯一码
        :param target_process_code: 目标审批流的唯一码
        :param biz_category_id: 业务分类标识
        :param process_name: 审批流名称
        :return:
        """

        return self._top_request(
            'dingtalk.smartwork.bpms.process.sync',
            optionaldict({
                'agent_id': agent_id,
                'src_process_code': src_process_code,
                'target_process_code': target_process_code,
                'biz_category_id': biz_category_id,
                'process_name': process_name
            })
        )

    def processinstance_create(
            self, process_code, originator_user_id, dept_id, approvers=None, form_component_values=None,
            agent_id=None, cc_list=(), cc_start=False, cc_finish=False, approvers_v2=None
    ):
        """
        发起审批实例

        :param process_code: 审批流的唯一码
        :param originator_user_id: 审批实例发起人的userid
        :param dept_id: 发起人所在的部门
        :param approvers: 审批人userid列表
        :param form_component_values: 审批流表单参数 name: 表单每一栏的名称 value: 表单每一栏的值, ext_value: 扩展值
                                      例:OrderedDict({name1: value1, name2: (value2, ext_value2), name3: (value3, )})
        :param agent_id:
        :param cc_list: 抄送人userid列表
        :param cc_start: 开始时抄送
        :param cc_finish: 结束时抄送
        :param approvers_v2: 审批人列表,支持会签/或签,优先级高于approvers变量
        :return:
        """
        cc_position = 'START' if cc_start else ''
        if cc_finish:
            if cc_position:
                cc_position += '_'
            cc_position += 'FINISH'
        if isinstance(approvers, (list, tuple, set)):
            approvers = ','.join(map(to_text, approvers))
        form_component_value_list = []
        if form_component_values:
            for name, value in form_component_values.items():
                data = {'name': name}
                if isinstance(value, (list, tuple)):
                    if len(value) > 1:
                        data['ext_value'] = value[1]
                    value = value[0]
                data['value'] = value
                form_component_value_list.append(data)

        return self._top_request(
            "dingtalk.oapi.processinstance.create",
            optionaldict({
                "process_code": process_code,
                "originator_user_id": originator_user_id,
                "dept_id": dept_id,
                "form_component_values": form_component_value_list,
                "agent_id": agent_id,
                "approvers": approvers,
                "cc_list": cc_list,
                "cc_position": cc_position,
                "approvers_v2": approvers_v2
            }),
            result_processor=lambda x: x['process_instance_id']
        )

    def processinstance_listids(self, process_code, start_time, end_time, size='10', cursor='0', userid_list=()):
        """
        分页获取审批实例id列表
        企业可以根据审批流的唯一标识,分页获取该审批流对应的审批实例id。只能取到权限范围内的相关部门的审批实例

        :param process_code: 流程模板唯一标识,可在oa后台编辑审批表单部分查询
        :param start_time: 审批实例开始时间,毫秒级
        :param end_time: 审批实例结束时间,毫秒级,默认取当前值
        :param size: 分页参数,每页大小,最多传10
        :param cursor: 分页查询的游标,最开始传0,后续传返回参数中的next_cursor值
        :param userid_list: 发起人用户id列表
        """
        if isinstance(start_time, (datetime.date, datetime.datetime)):
            start_time = int(time.mktime(start_time.timetuple()) * 1000)
        if isinstance(end_time, (datetime.date, datetime.datetime)):
            end_time = int(time.mktime(end_time.timetuple()) * 1000)
        if isinstance(userid_list, (list, tuple)):
            userid_list = ','.join(map(to_text, userid_list))
        return self._top_request(
            "dingtalk.oapi.processinstance.listids",
            optionaldict({
                "process_code": process_code,
                "start_time": start_time,
                "end_time": end_time,
                "size": size,
                "cursor": cursor,
                "userid_list": userid_list
            })
        )

    def processinstance_list(self, process_code, start_time, end_time=None, cursor=0, size=10, userid_list=()):
        """
        获取审批实例列表

        :param process_code: 流程模板唯一标识,可在oa后台编辑审批表单部分查询
        :param start_time: 	审批实例开始时间
        :param end_time: 审批实例结束时间,默认取当前值
        :param cursor: 每页大小,最多传10
        :param size: 分页查询的游标,最开始传0,后续传返回参数中的next_cursor值
        :param userid_list: 发起人用户id列表
        :return:
        """
        userid_list = ','.join(map(to_text, userid_list))

        if isinstance(start_time, (datetime.date, datetime.datetime)):
            start_time = int(time.mktime(start_time.timetuple()) * 1000)

        if isinstance(end_time, (datetime.date, datetime.datetime)):
            end_time = int(time.mktime(end_time.timetuple()) * 1000)

        assert isinstance(start_time, six.integer_types)
        assert end_time is None or isinstance(end_time, six.integer_types)

        return self._top_request(
            'dingtalk.smartwork.bpms.processinstance.list',
            optionaldict({
                'process_code': process_code,
                'start_time': start_time,
                'end_time': end_time,
                'cursor': cursor,
                'size': size,
                'userid_list': userid_list
            })
        )

    def processinstance_get(self, process_instance_id):
        """
        获取单个审批实例详情

        :param process_instance_id: 审批实例id
        :return:
        """
        return self._top_request(
            'dingtalk.smartwork.bpms.processinstance.get',
            {'process_instance_id': process_instance_id},
            result_processor=lambda x: x['process_instance']
        )

    def dingtalk_oapi_process_gettodonum(self, userid):
        """
        获取待我审批数量
        获取用户待审批数量

        :param userid: 用户id
        """
        return self._top_request(
            "dingtalk.oapi.process.gettodonum",
            {"userid": userid}
        )

    def process_listbyuserid(self, userid, offset=0, size=100):
        """
        根据用户id获取可见审批模板列表

        :param userid: 用户id
        :param offset: 分页游标,从0开始。根据返回结果中next_cursor是否为空判断是否有下一页,且再次调用offset设置成next_cursor的值
        :param size: 分页大小,最大可设置成100
        :return:
        """
        return self._top_request(
            'dingtalk.oapi.process.listbyuserid',
            {
                'userid': userid,
                'offset': offset,
                'size': size
            }
        )

    def process_instance_terminate(self, process_instance_id,  remark="", is_system=True, operating_userid=""):
        """
        调用本接口通过实例id终止当前企业下发起的审批实例。
        终止审批实例后,审批状态为“已撤销”。
        :param process_instance_id: 审批实例ID
        :param remark: 终止说明
        :param is_system: 是否通过系统操作:true:由系统直接终止false:由指定的操作者终止
        :param operating_userid: 操作人的userid, 当is_system为false时,该参数必传
        :return: 
        """
        return self._top_request(
            "dingtalk.oapi.process.instance.terminate",
            {
                "request": {
                    "process_instance_id": process_instance_id,
                    "remark": remark,
                    "is_system": is_system,
                    "operating_userid": operating_userid
                }
            }

        )


================================================
FILE: dingtalk/client/api/calendar.py
================================================
# encoding: utf-8
from __future__ import absolute_import, unicode_literals


from dingtalk.client.api.base import DingTalkBaseAPI


class Calendar(DingTalkBaseAPI):

    def create(self, create_vo):
        """
        创建日程

        :param create_vo: 创建日程实体
        """
        return self._top_request(
            "dingtalk.oapi.calendar.create",
            {"create_vo": create_vo}
        )

    def list(
            self,
            user_id,
            calendar_folder_id='',
            time_min=None,
            i_cal_uid='',
            single_events='',
            page_token='',
            max_results=250,
            time_max=None
    ):
        """
        日程查询

        :param user_id: 员工ID
        :param calendar_folder_id: 钉钉日历文件夹的对外id,默认是自己的默认文件夹
        :param time_min: 查询时间下限
        :param i_cal_uid: 日程跨域唯一id,用于唯一标识一组关联日程事件
        :param single_events: 是否需要展开循环日程
        :param page_token: 查询对应页,值有上一次请求返回的结果里对应nextPageToken
        :param max_results: 结果返回的最多数量,默认250,最多返回2500
        :param time_max: 查询时间上限
        """
        return self._top_request(
            "dingtalk.oapi.calendar.list",
            {
                "user_id": user_id,
                "calendar_folder_id": calendar_folder_id,
                "time_min": time_min,
                "i_cal_uid": i_cal_uid,
                "single_events": single_events,
                "page_token": page_token,
                "max_results": max_results,
                "time_max": time_max
            }
        )

    def delete(self, userid='', calendar_id=''):
        """
        日程删除

        :param userid: 员工id
        :param calendar_id: 日程id
        """
        return self._top_request(
            "dingtalk.oapi.calendar.delete",
            {
                "userid": userid,
                "calendar_id": calendar_id
            }
        )


================================================
FILE: dingtalk/client/api/callback.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from dingtalk.client.api.base import DingTalkBaseAPI


class Callback(DingTalkBaseAPI):
    ALL_CALL_BACK_TAGS = (
        'user_add_org', 'user_modify_org', 'user_leave_org', 'user_active_org',
        'org_admin_add', 'org_admin_remove', 'org_dept_create', 'org_dept_modify',
        'org_dept_remove', 'org_change', 'org_remove',
        'label_user_change', 'label_conf_add', 'label_conf_modify', 'label_conf_del',
        'edu_user_insert', 'edu_user_update', 'edu_user_delete',
        'edu_user_relation_insert', 'edu_user_relation_update', 'edu_user_relation_delete',
        'edu_dept_insert', 'edu_dept_update', 'edu_dept_delete',
        'chat_add_member', 'chat_remove_member', 'chat_quit', 'chat_update_owner', 'chat_update_title', 'chat_disband',
        'check_in', 'bpms_task_change', 'bpms_instance_change',
        'attendance_check_record', 'attendance_schedule_change', 'attendance_overtime_duration',
        'meetingroom_book', 'meetingroom_room_info'
    )

    def register_call_back(self, call_back_tags, token, aes_key, url):
        """
        注册事件回调接口

        :param call_back_tags: 需要监听的事件类型
        :param token: 加解密需要用到的token
        :param aes_key: 数据加密密钥
        :param url: 接收事件回调的url
        :return:
        """
        call_back_tag = []
        for k in call_back_tags:
            if k in self.ALL_CALL_BACK_TAGS:
                call_back_tag.append(k)
        return self._post(
            '/call_back/register_call_back',
            {
                "call_back_tag": call_back_tag,
                "token": token,
                "aes_key": aes_key,
                "url": url
            }
        )

    def get_call_back(self):
        """
        查询事件回调接口

        :return:
        """
        return self._get('/call_back/get_call_back')

    def update_call_back(self, call_back_tags, token, aes_key, url):
        """
        更新事件回调接口

        :param call_back_tags: 需要监听的事件类型
        :param token: 加解密需要用到的token
        :param aes_key: 数据加密密钥
        :param url: 接收事件回调的url
        :return:
        """
        call_back_tag = []
        for k in call_back_tags:
            if k in self.ALL_CALL_BACK_TAGS:
                call_back_tag.append(k)
        return self._post(
            '/call_back/update_call_back',
            {
                "call_back_tag": call_back_tag,
                "token": token,
                "aes_key": aes_key,
                "url": url
            }
        )

    def delete_call_back(self):
        """
        删除事件回调接口

        :return:
        """
        return self._get('/call_back/delete_call_back')

    def get_call_back_failed_result(self):
        """
        获取回调失败的结果

        :return:
        """
        return self._get('/call_back/get_call_back_failed_result')


================================================
FILE: dingtalk/client/api/chat.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from dingtalk.client.api.base import DingTalkBaseAPI
from dingtalk.model.message import BodyBase


class Chat(DingTalkBaseAPI):

    def create(self, name, owner, useridlist, show_history_type=False, searchable=0,
               validation_type=0, mention_all_authority=0, chat_banned_type=0, management_type=0):
        """
        创建会话

        :param name: 群名称。长度限制为1~20个字符
        :param owner: 群主userId,员工唯一标识ID;必须为该会话useridlist的成员之一
        :param useridlist: 群成员列表,每次最多支持40人,群人数上限为1000
        :param show_history_type: 新成员是否可查看聊天历史消息(新成员入群是否可查看最近100条聊天记录)
        :param searchable: 群可搜索,0-默认,不可搜索,1-可搜索
        :param validation_type: 入群验证,0:不入群验证(默认) 1:入群验证
        :param mention_all_authority: @all 权限,0-默认,所有人,1-仅群主可@all
        :param chat_banned_type: 群禁言,0-默认,不禁言,1-全员禁言
        :param management_type: 管理类型,0-默认,所有人可管理,1-仅群主可管理
        :return: 群会话的id
        """
        return self._post(
            '/chat/create',
            {
                'name': name,
                'owner': owner,
                'useridlist': useridlist,
                'showHistoryType': 1 if show_history_type else 0,
                'chatBannedType': chat_banned_type,
                'searchable': searchable,
                'validationType': validation_type,
                'mentionAllAuthority': mention_all_authority,
                'managementType': management_type
            },
            result_processor=lambda x: x['chatid']
        )

    def update(self, chatid, name=None, owner=None, add_useridlist=(), del_useridlist=(), icon='', chat_banned_type=0,
               searchable=0, validation_type=0, mention_all_authority=0, show_history_type=False, management_type=0):
        """
        修改会话

        :param chatid: 群会话的id
        :param name: 群名称。长度限制为1~20个字符,不传则不修改
        :param owner: 群主userId,员工唯一标识ID;必须为该会话成员之一;不传则不修改
        :param add_useridlist: 添加成员列表,每次最多支持40人,群人数上限为1000
        :param del_useridlist: 删除成员列表,每次最多支持40人,群人数上限为1000
        :param icon: 群头像mediaid
        :param chat_banned_type: 群禁言,0-默认,不禁言,1-全员禁言
        :param searchable: 群可搜索,0-默认,不可搜索,1-可搜索
        :param validation_type: 入群验证,0:不入群验证(默认) 1:入群验证
        :param mention_all_authority: @all 权限,0-默认,所有人,1-仅群主可@all
        :param show_history_type: 新成员是否可查看聊天历史消息(新成员入群是否可查看最近100条聊天记录)
        :param management_type: 管理类型,0-默认,所有人可管理,1-仅群主可管理
        :return:
        """
        return self._post(
            '/chat/update',
            {
                'chatid': chatid,
                'name': name,
                'owner': owner,
                'add_useridlist': add_useridlist,
                'del_useridlist': del_useridlist,
                'icon': icon,
                'chatBannedType': chat_banned_type,
                'searchable': searchable,
                'validationType': validation_type,
                'mentionAllAuthority': mention_all_authority,
                'showHistoryType': 1 if show_history_type else 0,
                'managementType': management_type
            }
        )

    def get(self, chatid):
        """
        获取会话

        :param chatid: 群会话的id
        :return: 群会话信息
        """
        return self._get(
            '/chat/get',
            {'chatid': chatid},
            result_processor=lambda x: x['chat_info']
        )

    def send(self, chatid, msg_body):
        """
        发送群消息

        :param chatid: 群会话的id
        :param msg_body: BodyBase 消息体
        :return: 加密的消息id
        """
        if isinstance(msg_body, BodyBase):
            msg_body = msg_body.get_dict()
        msg_body['chatid'] = chatid
        return self._post(
            '/chat/send',
            msg_body,
            result_processor=lambda x: x['messageId']
        )

    def get_read_list(self, message_id, cursor=0, size=100):
        """
        查询群消息已读人员列表

        :param message_id: 发送群消息接口返回的加密消息id
        :param cursor: 分页查询的游标,第一次传0,后续传返回结果中的next_cursor。返回结果中没有next_cursor时,表示没有后续的数据了
        :param size: 分页查询的大小,最大可以传100
        :return:
        """
        return self._get(
            '/chat/getReadList',
            {"messageId": message_id, "cursor": cursor, "size": size}
        )


================================================
FILE: dingtalk/client/api/checkin.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

import time
import datetime

import six
from dingtalk.core.utils import to_text

from dingtalk.client.api.base import DingTalkBaseAPI


class Checkin(DingTalkBaseAPI):

    def record(self, department_id, start_time, end_time, offset=0, size=100, order_asc=True):
        """
        获得签到数据

        :param department_id: 部门id(1 表示根部门)
        :param start_time: 开始时间
        :param end_time: 结束时间
        :param offset: 偏移量
        :param size: 分页大小
        :param order_asc: 是否正序排列
        :return:
        """

        if isinstance(start_time, (datetime.date, datetime.datetime)):
            start_time = int(time.mktime(start_time.timetuple()) * 1000)

        if isinstance(end_time, (datetime.date, datetime.datetime)):
            end_time = int(time.mktime(end_time.timetuple()) * 1000)

        assert isinstance(start_time, six.integer_types) and isinstance(end_time, six.integer_types)
        return self._get(
            '/checkin/record',
            {
                'department_id': department_id,
                'start_time': start_time,
                'end_time': end_time,
                'offset': offset,
                'size': size,
                'order_asc': 'asc' if order_asc else 'desc'
            },
            result_processor=lambda x: x['data']
        )

    def record_get(self, userid_list, start_time, end_time, offset=0, size=100):
        """
        获取多个用户的签到记录 (如果是取1个人的数据,时间范围最大到10天,如果是取多个人的数据,时间范围最大1天。)

        :param userid_list: 需要查询的用户列表
        :param start_time: 起始时间
        :param end_time: 截止时间
        :param offset: 偏移量
        :param size: 分页大小
        :return:
        """
        if isinstance(start_time, (datetime.date, datetime.datetime)):
            start_time = int(time.mktime(start_time.timetuple()) * 1000)

        if isinstance(end_time, (datetime.date, datetime.datetime)):
            end_time = int(time.mktime(end_time.timetuple()) * 1000)

        assert isinstance(start_time, six.integer_types) and isinstance(end_time, six.integer_types)
        if isinstance(userid_list, (list, tuple, set)):
            userid_list = ','.join(map(to_text, userid_list))

        return self._top_request(
            'dingtalk.smartwork.checkin.record.get',
            {
                'userid_list': userid_list,
                'start_time': start_time,
                'end_time': end_time,
                'offset': offset,
                'size': size
            }
        )


================================================
FILE: dingtalk/client/api/cspace.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

import six
from dingtalk.core.utils import to_text, json_loads

from dingtalk.client.api.base import DingTalkBaseAPI


class Cspace(DingTalkBaseAPI):

    def add_to_single_chat(self, agent_id, userid, media_id, file_name):
        """
        发送文件给指定用户

        :param agent_id: 文件发送者微应用的agentId
        :param userid: 文件接收人的userid
        :param media_id: 调用钉盘上传文件接口得到的mediaid
        :param file_name: 文件名(需包含含扩展名)
        :return:
        """
        return self._post(
            '/cspace/add_to_single_chat',
            params={
                'agent_id': agent_id,
                'userid': userid,
                'media_id': media_id,
                'file_name': file_name
            }
        )

    def add(self, code, media_id, space_id, folder_id, name, agent_id=None, overwrite=False):
        """
        新增文件到用户钉盘

        :param code: 如果是微应用,code值为微应用免登授权码,如果是服务窗应用,code值为服务窗免登授权码
                     code为临时授权码,只能消费一次,下次请求需要重新获取新的code。
        :param media_id: 调用钉盘上传文件接口得到的mediaid
        :param space_id: 调用云盘选择控件后获取的用户钉盘空间ID
        :param folder_id: 调用云盘选择控件后获取的用户钉盘文件夹ID
        :param name: 上传文件的名称,不能包含非法字符
        :param agent_id: 微应用的agentId
        :param overwrite: 到同名文件是否覆盖,若不覆盖,则会自动重命名本次新增的文件
        :return:
        """
        return self._get(
            '/cspace/add',
            {
                'agent_id': agent_id,
                'code': code,
                'media_id': media_id,
                'space_id': space_id,
                'folder_id': folder_id,
                'name': name,
                'overwrite': overwrite
            },
            result_processor=lambda x:
                json_loads(x['dentry']) if isinstance(x['dentry'], six.string_types) else x['dentry']
        )

    def get_custom_space(self, domain=None, agent_id=None):
        """
        获取企业下的自定义空间

        :param domain: 企业调用时传入,需要为10个字节以内的字符串,仅可包含字母和数字,大小写不敏感
        :param agent_id: ISV调用时传入,微应用agentId
        :return: 申请到的空间id
        """
        return self._get(
            '/cspace/get_custom_space',
            {
                'agent_id': agent_id,
                'domain': domain
            },
            result_processor=lambda x: x['spaceid']
        )

    def grant_custom_space(self, isdownload, userid, agent_id=None, domain=None, duration=30, path=None, fileids=()):
        """
        授权用户访问企业下的自定义空间

        :param isdownload: 权限类型,true为下载,false为上传
        :param userid: 企业用户userid
        :param agent_id: ISV调用时传入,授权访问指定微应用的自定义空间
        :param domain: 企业调用时传入,授权访问该domain的自定义空间
        :param duration: 权限有效时间,有效范围为0~3600秒,超出此范围或不传默认为30秒
        :param path: 授权访问的路径
        :param fileids: 授权访问的文件id列表
        :return:
        """
        _type = 'download' if isdownload else 'add'
        fileids = ','.join(map(to_text, fileids))
        return self._get(
            '/cspace/grant_custom_space',
            {
                'type': _type,
                'agent_id': agent_id,
                'domain': domain,
                'userid': userid,
                'duration': duration,
                'path': path,
                'fileids': fileids
            },
            result_processor=lambda x: x['spaceid']
        )

    def file_upload_transaction(self, agent_id, file_size, chunk_numbers, upload_id=None):
        """
        开启/提交 文件上传事务

        :param agent_id: 微应用的agentId
        :param file_size: 文件大小
        :param chunk_numbers: 文件总块数
        :param upload_id: 上传事务id 不传该值为开启事务,传该值为提交事务
        :return: 开启事务:上传事务id; 提交事务:文件存储id
        """
        return self._get(
            '/file/upload/transaction',
            {
                'agent_id': agent_id,
                'file_size': file_size,
                'chunk_numbers': chunk_numbers,
                'upload_id': upload_id
            },
            result_processor=lambda x: x['upload_id'] if upload_id is None else x['media_id']
        )

    def file_upload_chunk(self, agent_id, upload_id, chunk_sequence, file_chunk):
        """
        上传文件块

        :param agent_id: 微应用的agentId
        :param upload_id: 上传事务id
        :param chunk_sequence: 文件块号,从1开始计数
        :param file_chunk: 要上传的文件块,一个 File-object
        :return:
        """
        return self._post(
            '/file/upload/chunk',
            params={
                'agent_id': agent_id,
                'upload_id': upload_id,
                'chunk_sequence': chunk_sequence
            },
            files={
                'file': file_chunk
            }
        )

    def file_upload_single(self, agent_id, file_size, media_file):
        """
        单步文件上传

        :param agent_id: 微应用的agentId
        :param file_size: 文件大小
        :param media_file: 要上传的文件,一个 File-object
        :return:
        """
        return self._post(
            '/file/upload/single',
            params={
                'agent_id': agent_id,
                'file_size': file_size
            },
            files={
                'file': media_file
            },
            result_processor=lambda x: x['media_id']
        )


================================================
FILE: dingtalk/client/api/department.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from dingtalk.client.api.base import DingTalkBaseAPI


class Department(DingTalkBaseAPI):

    def list_ids(self, _id=1):
        """
        获取子部门ID列表

        :param _id: 父部门id(如果不传,默认部门为根部门,根部门ID为1)
        :return: 子部门ID列表数据
        """
        return self._get(
            '/department/list_ids',
            {'id': _id},
            result_processor=lambda x: x['sub_dept_id_list']
        )

    def list(self, _id=1, lang='zh_CN', fetch_child=False):
        """
        获取部门列表

        :param _id: 父部门id(如果不传,默认部门为根部门,根部门ID为1)
        :param lang: 通讯录语言(默认zh_CN,未来会支持en_US)
        :param fetch_child: 是否递归部门的全部子部门,ISV微应用固定传递false。
        :return: 部门列表数据。以部门的order字段从小到大排列
        """
        return self._get(
            '/department/list',
            {'id': _id, 'lang': lang, 'fetch_child': fetch_child},
            result_processor=lambda x: x['department']
        )

    def get(self, _id, lang='zh_CN'):
        """
        获取部门详情

        :param _id: 部门id
        :param lang: 通讯录语言(默认zh_CN,未来会支持en_US)
        :return: 部门列表数据。以部门的order字段从小到大排列
        """
        return self._get(
            '/department/get',
            {'id': _id, 'lang': lang}
        )

    def create(self, department_data):
        """
        创建部门

        :param department_data: 部门信息
        :return: 创建的部门id
        """
        if 'id' in department_data:
            raise AttributeError('不能包含Id')
        return self._post(
            '/department/create',
            department_data,
            result_processor=lambda x: x['id']
        )

    def update(self, department_data):
        """
        更新部门

        :param department_data: 部门信息
        :return: 已经更新的部门id
        """
        if 'id' not in department_data:
            raise AttributeError('必须包含Id')
        return self._post(
            '/department/update',
            department_data,
            result_processor=lambda x: x['id']
        )

    def delete(self, _id):
        """
        删除部门

        :param _id: 部门id。(注:不能删除根部门;不能删除含有子部门、成员的部门)
        :return:
        """
        return self._get(
            '/department/delete',
            {'id': _id}
        )

    def list_parent_depts_by_dept(self, _id):
        """
        查询部门的所有上级父部门路径

        :param _id: 希望查询的部门的id,包含查询的部门本身
        :return: 该部门的所有父部门id列表
        """
        return self._get(
            '/department/list_parent_depts_by_dept',
            {'id': _id},
            result_processor=lambda x: x['parentIds']
        )

    def list_parent_depts(self, user_id):
        """
        查询指定用户的所有上级父部门路径

        :param user_id: 希望查询的用户的id
        :return: 按顺序依次为其所有父部门的ID,直到根部门
        """
        return self._get(
            '/department/list_parent_depts',
            {'userId': user_id},
            result_processor=lambda x: x['department']
        )


================================================
FILE: dingtalk/client/api/employeerm.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

import datetime
import json

from optionaldict import optionaldict

from dingtalk.core.utils import to_text
from dingtalk.client.api.base import DingTalkBaseAPI


class Employeerm(DingTalkBaseAPI):

    DATE_TIME_FORMAT = '%Y-%m-%d %H:%M:%S'

    def get(self, userid):
        """
        获取智能人事员工花名册详细数据

        :param userid: 查询用户userid
        :return:
        """
        return self._top_request(
            'dingtalk.corp.hrm.employee.get',
            {'userid': userid},
            result_processor=lambda x: x['group_list']
        )

    def list(self, userid_list, field_filter_list=()):
        """
        批量获取员工花名册字段信息
        智能人事业务,企业/ISV根据员工id批量访问员工花名册信息

        :param userid_list: 员工id列表
        :param field_filter_list: 需要获取的花名册字段信息
        """
        if isinstance(userid_list, (list, tuple, set)):
            userid_list = ','.join(map(to_text, userid_list))
        if isinstance(field_filter_list, (list, tuple, set)):
            field_filter_list = ','.join(map(to_text, field_filter_list))
        return self._top_request(
            "dingtalk.oapi.smartwork.hrm.employee.list",
            {
                "userid_list": userid_list,
                "field_filter_list": field_filter_list
            }
        )

    def querypreentry(self, offset=0, size=50):
        """
        智能人事查询公司待入职员工列表
        智能人事业务,企业/ISV分页查询公司待入职员工id列表

        :param offset: 分页起始值,默认0开始
        :param size: 分页大小,最大50
        """
        return self._top_request(
            "dingtalk.oapi.smartwork.hrm.employee.querypreentry",
            {
                "offset": offset,
                "size": size
            }
        )

    def queryonjob(self, status_list=(), offset=0, size=50):
        """
        智能人事查询公司在职员工列表
        智能人事业务,提供企业/ISV按在职状态分页查询公司在职员工id列表

        :param status_list: 在职员工子状态筛选。2,试用期;3,正式;5,待离职;-1,无状态
        :param offset: 分页起始值,默认0开始
        :param size: 分页大小,最大50
        """
        if isinstance(status_list, (list, tuple, set)):
            status_list = ','.join(map(to_text, status_list))
        return self._top_request(
            "dingtalk.oapi.smartwork.hrm.employee.queryonjob",
            {
                "status_list": status_list,
                "offset": offset,
                "size": size
            }
        )

    def querydimission(self, offset=0, size=50):
        """
        智能人事查询公司离职员工列表
        智能人事业务,提供企业/ISV分页查询公司离职员工id列表

        :param offset: 分页游标,从0开始。根据返回结果里的next_cursor是否为空来判断是否还有下一页,且再次调用时offset设置成next_cursor的值
        :param size: 分页大小,最大50
        """
        return self._top_request(
            "dingtalk.oapi.smartwork.hrm.employee.querydimission",
            {
                "offset": offset,
                "size": size
            }
        )

    def listdimission(self, userid_list=()):
        """
        批量获取员工离职信息
        根据传入的staffId列表,批量查询员工的离职信息

        :param userid_list: 员工id
        """
        if isinstance(userid_list, (list, tuple, set)):
            userid_list = ','.join(map(to_text, userid_list))
        return self._top_request(
            "dingtalk.oapi.smartwork.hrm.employee.listdimission",
            {
                "userid_list": userid_list
            }
        )

    def addpreentry(self, name, mobile, pre_entry_time=None, op_userid=None, extend_info=None):
        """
        智能人事添加企业待入职员工

        :param name: 员工姓名
        :param mobile: 手机号
        :param pre_entry_time: 预期入职时间
        :param op_userid: 操作人userid
        :param extend_info: 扩展信息
        :return:
        """
        if isinstance(pre_entry_time, (datetime.date, datetime.datetime)):
            pre_entry_time = pre_entry_time.strftime(self.DATE_TIME_FORMAT)
        if isinstance(extend_info, dict):
            extend_info = json.dumps(extend_info)

        return self._top_request(
            "dingtalk.oapi.smartwork.hrm.employee.addpreentry",
            {
                "param": optionaldict({
                    "name": name,
                    "mobile": mobile,
                    "pre_entry_time": pre_entry_time,
                    "op_userid": op_userid,
                    "extend_info": extend_info
                })
            }
        )

    def getdismissionlist(self, op_userid, current=1, page_size=100):
        """
        获取离职人员信息

        :param op_userid: 操作人userid
        :param current: 第几页,从1开始
        :param page_size: 一页多少数据,在1-100之间
        :return:
        """
        return self._top_request(
            'dingtalk.corp.hrm.employee.getdismissionlist',
            {'op_userid': op_userid, 'current': current, 'page_size': page_size},
            result_processor=lambda x: x['page']
        )

    def setuserworkdata(self, op_userid, userid, data_value, data_desc=None):
        """
        更新用户绩效数据

        :param op_userid: 操作人userid,必须是拥有被操作人操作权限的管理员userid
        :param userid: 被操作人userid
        :param data_value: 数据值,可以为数值或者字符串
        :param data_desc: 数据项描述信息
        :return:
        """
        hrm_api_user_data_model = {'userid': userid, 'data_value': data_value, 'data_desc': data_desc}
        return self._top_request(
            'dingtalk.corp.hrm.employee.getdismissionlist',
            {'op_userid': op_userid, 'hrm_api_user_data_model': hrm_api_user_data_model}
        )

    def modjobinfo(self, op_userid, userid, employee_type=None, employee_status=None, confirm_join_time=None,
                   probation_period_type=None, regular_time=None, join_working_time=None, birth_time=None):
        """
        更新员工工作信息

        :param op_userid: 操作人userid,必须是拥有被操作人操作权限的管理员userid
        :param userid: 被操作人userid
        :param employee_type: 员工类型(1:全职,2:兼职,3:实习,4:劳务派遣,5:退休返聘,6:劳务外包)
        :param employee_status: 员工状态(2:试用,3:正式)
        :param confirm_join_time: 入职日期
        :param probation_period_type: 试用期(1:无试用期,2:1个月,3:2个月,4:3个月,5:4个月,6:5个月,7:6个月,8:其他)
        :param regular_time: 转正时间
        :param join_working_time: 首次参加工作时间
        :param birth_time: 生日日期
        :return:
        """
        if confirm_join_time is not None and isinstance(confirm_join_time, (datetime.date, datetime.datetime)):
            confirm_join_time = confirm_join_time.strftime('%Y-%m-%d %H:%M:%S')
        if regular_time is not None and isinstance(regular_time, (datetime.date, datetime.datetime)):
            regular_time = regular_time.strftime('%Y-%m-%d %H:%M:%S')
        if join_working_time is not None and isinstance(join_working_time, (datetime.date, datetime.datetime)):
            join_working_time = join_working_time.strftime('%Y-%m-%d %H:%M:%S')
        if birth_time is not None and isinstance(birth_time, (datetime.date, datetime.datetime)):
            birth_time = birth_time.strftime('%Y-%m-%d %H:%M:%S')
        hrm_api_job_model = {
            'userid': userid,
            'employee_type': employee_type,
            'employee_status': employee_status,
            'confirm_join_time': confirm_join_time,
            'probation_period_type': probation_period_type,
            'regular_time': regular_time,
            'join_working_time': join_working_time,
            'birth_time': birth_time
        }
        return self._top_request(
            'dingtalk.corp.hrm.employee.modjobinfo',
            {'op_userid': op_userid, 'hrm_api_job_model': hrm_api_job_model}
        )


================================================
FILE: dingtalk/client/api/ext.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

import six

from dingtalk.client.api.base import DingTalkBaseAPI
from dingtalk.core.utils import json_loads


class Ext(DingTalkBaseAPI):

    def listlabelgroups(self, offset=0, size=100):
        """
        标签列表

        :param offset: 偏移位置
        :param size: 分页大小,最大100
        :return:
        """
        return self._top_request(
            'dingtalk.corp.ext.listlabelgroups',
            {'offset': offset, 'size': size},
            result_processor=lambda x: json_loads(x) if isinstance(x, six.string_types) else x
        )

    def list(self, offset=0, size=100):
        """
        外部联系人列表

        :param offset: 偏移位置
        :param size: 分页大小,最大100
        :return:
        """
        return self._top_request(
            'dingtalk.corp.ext.list',
            {'offset': offset, 'size': size},
            result_processor=lambda x: json_loads(x) if isinstance(x, six.string_types) else x
        )

    def add(self, name, follower_userid, label_ids, mobile, state_code='86',
            title=None, share_deptids=(), remark=None, address=None, company_name=None, share_userids=()):
        """
        添加企业外部联系人

        :param name: 名称
        :param follower_userid: 负责人userId
        :param state_code: 手机号国家码
        :param mobile: 手机号
        :param label_ids: 标签列表
        :param title: 职位
        :param share_deptids: 共享给的部门ID
        :param remark: 备注
        :param address: 地址
        :param company_name: 企业名
        :param share_userids: 共享给的员工userId列表
        :return:
        """

        return self._top_request(
            'dingtalk.corp.ext.add',
            {
                'contact': {
                    'name': name,
                    'follower_user': follower_userid,
                    'state_code': state_code,
                    'mobile': mobile,
                    'label_ids': label_ids,
                    'title': title,
                    'share_deptids': share_deptids,
                    'remark': remark,
                    'address': address,
                    'company_name': company_name,
                    'share_userid': share_userids
                }
            },
            result_processor=lambda x: x['userid']
        )


================================================
FILE: dingtalk/client/api/extcontact.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from dingtalk.client.api.base import DingTalkBaseAPI


class ExtContact(DingTalkBaseAPI):

    def listlabelgroups(self, offset=0, size=100):
        """
        获取外部联系人标签列表

        :param size: 分页大小,最大100
        :param offset: 偏移位置
        """
        return self._top_request(
            "dingtalk.oapi.extcontact.listlabelgroups",
            {"size": size, "offset": offset}
        )

    def list(self, offset=0, size=100):
        """
        获取外部联系人列表

        :param size: 分页大小, 最大100
        :param offset: 偏移位置
        """
        return self._top_request(
            "dingtalk.oapi.extcontact.list",
            {"size": size, "offset": offset}
        )

    def get(self, user_id):
        """
        获取企业外部联系人详情

        :param user_id: userId
        """
        return self._top_request(
            "dingtalk.oapi.extcontact.get",
            {"user_id": user_id}
        )

    def create(self, name, follower_user_id, label_ids, mobile, state_code='86',
               title=None, share_dept_ids=(), remark=None, address=None, company_name=None, share_user_ids=()):
        """
        添加外部联系人

        :param name: 名称
        :param follower_user_id: 负责人userId
        :param state_code: 手机号国家码
        :param mobile: 手机号
        :param label_ids: 标签列表
        :param title: 职位
        :param share_dept_ids: 共享给的部门ID
        :param remark: 备注
        :param address: 地址
        :param company_name: 企业名
        :param share_user_ids: 共享给的员工userId列表
        :return:
        """
        if not isinstance(label_ids, (list, tuple, set)):
            label_ids = (label_ids, )
        if not isinstance(share_dept_ids, (list, tuple, set)):
            share_dept_ids = (share_dept_ids, )
        if not isinstance(share_user_ids, (list, tuple, set)):
            share_user_ids = (share_user_ids, )
        return self._top_request(
            "dingtalk.oapi.extcontact.create",
            {
                "contact": {
                    'name': name,
                    'follower_user_id': follower_user_id,
                    'state_code': state_code,
                    'mobile': mobile,
                    'label_ids': label_ids,
                    'title': title,
                    'share_dept_ids': share_dept_ids,
                    'remark': remark,
                    'address': address,
                    'company_name': company_name,
                    'share_user_ids': share_user_ids
                }
            },
            result_processor=lambda x: x['userid']
        )

    def update(self, user_id, name, follower_user_id, label_ids, mobile, state_code='86',
               title=None, share_dept_ids=(), remark=None, address=None, company_name=None, share_user_ids=()):
        """
        更新外部联系人

        :param user_id: 该外部联系人的userId
        :param name: 名称
        :param follower_user_id: 负责人userId
        :param state_code: 手机号国家码
        :param mobile: 手机号
        :param label_ids: 标签列表
        :param title: 职位
        :param share_dept_ids: 共享给的部门ID
        :param remark: 备注
        :param address: 地址
        :param company_name: 企业名
        :param share_user_ids: 共享给的员工userId列表
        :return:
        """
        if not isinstance(label_ids, (list, tuple, set)):
            label_ids = (label_ids, )
        if not isinstance(share_dept_ids, (list, tuple, set)):
            share_dept_ids = (share_dept_ids, )
        if not isinstance(share_user_ids, (list, tuple, set)):
            share_user_ids = (share_user_ids, )
        return self._top_request(
            "dingtalk.oapi.extcontact.update",
            {
                "contact": {
                    "user_id": user_id,
                    'name': name,
                    'follower_user_id': follower_user_id,
                    'state_code': state_code,
                    'mobile': mobile,
                    'label_ids': label_ids,
                    'title': title,
                    'share_dept_ids': share_dept_ids,
                    'remark': remark,
                    'address': address,
                    'company_name': company_name,
                    'share_user_ids': share_user_ids
                }
            }
        )

    def delete(self, user_id):
        """
        删除外部联系人

        :param user_id: 用户id
        """
        return self._top_request(
            "dingtalk.oapi.extcontact.delete",
            {"user_id": user_id}
        )


================================================
FILE: dingtalk/client/api/health.py
================================================
# encoding: utf-8
from __future__ import absolute_import, unicode_literals

import datetime

from dingtalk.client.api.base import DingTalkBaseAPI
from dingtalk.core.utils import to_text


class Health(DingTalkBaseAPI):

    def stepinfo_getuserstatus(self, userid):
        """
        查询用户是否开启了钉钉运动

        :param userid: 用户id
        """
        return self._top_request(
            "dingtalk.oapi.health.stepinfo.getuserstatus",
            {"userid": userid},
            result_processor=lambda x: x['status']
        )

    def stepinfo_list(self, _type, object_id, stat_dates):
        """
        获取个人或部门钉钉运动步数

        :param _type: 0表示取用户步数,1表示取部门步数
        :param object_id: 可以传入用户userid或者部门id
        :param stat_dates: 时间列表
        """
        if not isinstance(stat_dates, (list, tuple, set)):
            stat_dates = [stat_dates]

        stat_dates = ",".join(map(lambda x: x.strftime("%Y%m%d") if isinstance(x, datetime.date) else x, stat_dates))
        return self._top_request(
            "dingtalk.oapi.health.stepinfo.list",
            {
                "type": _type,
                "object_id": object_id,
                "stat_dates": stat_dates
            }
        )

    def stepinfo_listbyuserid(self, userids, stat_date):
        """
        批量查询多个用户的钉钉运动步数

        :param userids: 员工userid列表,最多传50个
        :param stat_date: 时间
        """
        if isinstance(stat_date, datetime.date):
            stat_date = stat_date.strftime("%Y%m%d")
        if isinstance(userids, (list, tuple, set)):
            userids = ",".join(map(to_text, userids))
        return self._top_request(
            "dingtalk.oapi.health.stepinfo.listbyuserid",
            {
                "userids": userids,
                "stat_date": stat_date
            }
        )


================================================
FILE: dingtalk/client/api/message.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

import json

from optionaldict import optionaldict

from dingtalk.core.utils import to_text
from six.moves.urllib.parse import urlencode

from dingtalk.client.api.base import DingTalkBaseAPI
from dingtalk.model.message import BodyBase


class Message(DingTalkBaseAPI):

    @staticmethod
    def get_pc_url(url, pc_slide=True):
        """
        消息链接能在PC端打开

        :param url: 要打开的链接
        :param pc_slide: 如果为true代表在PC客户端打开,为false或者不写代表用浏览器打开
        :return:
        """
        params = {'url': url}
        if pc_slide:
            params['pc_slide'] = 'true'
        return "dingtalk://dingtalkclient/page/link?%s" % urlencode(params)

    def media_upload(self, media_type, media_file):
        """
        上传媒体文件

        :param media_type: 媒体文件类型,分别有图片(image)、语音(voice)、普通文件(file)
        :param media_file: 要上传的文件,一个 File-object
        :return:
        """
        return self._post(
            '/media/upload',
            params={'type': media_type},
            files={'media': media_file}
        )

    def media_download_file(self, media_id):
        """
        获取媒体文件

        :param media_id: 媒体文件的唯一标示
        :return: requests 的 Response 实例
        """
        return self._get(
            '/media/downloadFile',
            {'media_id': media_id}
        )

    def send_to_conversation(self, sender, cid, msg_body):
        """
        发送普通消息

        :param sender: 消息发送者员工ID
        :param cid: 群消息或者个人聊天会话Id
        :param msg_body: BodyBase 消息体
        :return:
        """
        if isinstance(msg_body, BodyBase):
            msg_body = msg_body.get_dict()
        msg_body['sender'] = sender
        msg_body['cid'] = cid
        return self._post('/message/send_to_conversation', msg_body)

    def send(self, agentid, msg_body, touser_list=(), toparty_list=()):
        """
        发送企业通知消息

        :param agentid: 企业应用id,这个值代表以哪个应用的名义发送消息
        :param msg_body: BodyBase 消息体
        :param touser_list: 员工id列表
        :param toparty_list: 部门id列表
        :return:
        """

        touser = "|".join(map(to_text, touser_list))
        toparty = "|".join(map(to_text, toparty_list))
        if isinstance(msg_body, BodyBase):
            msg_body = msg_body.get_dict()
        msg_body['touser'] = touser
        msg_body['toparty'] = toparty
        msg_body['agentid'] = agentid
        return self._post('/message/send', msg_body)

    def list_message_status(self, message_id):
        """
        获取企业通知消息已读未读状态

        :param message_id: 消息id
        :return:
        """
        return self._post('/message/list_message_status', {"messageId": message_id})

    def send_by_code(self, code, msg_body):
        """
        企业通知消息接口(用户反馈式)

        :param code: 用户操作产生的授权码
        :param msg_body: BodyBase 消息体
        :return:
        """
        if isinstance(msg_body, BodyBase):
            msg_body = msg_body.get_dict()
        msg_body['code'] = code
        return self._post('/message/sendByCode', msg_body)

    def asyncsend(self, msg_body, agent_id, userid_list=(), dept_id_list=(), to_all_user=False):
        """
        企业会话消息异步发送

        :param msg_body: BodyBase 消息体
        :param agent_id: 微应用的id
        :param userid_list: 接收者的用户userid列表
        :param dept_id_list: 接收者的部门id列表
        :param to_all_user: 是否发送给企业全部用户
        :return: 任务id
        """
        userid_list = ",".join(map(to_text, userid_list))
        dept_id_list = ",".join(map(to_text, dept_id_list))

        if isinstance(msg_body, BodyBase):
            msg_body = msg_body.get_dict()
        msgtype = msg_body['msgtype']
        msgcontent = json.dumps(msg_body[msgtype])
        return self._top_request(
            'dingtalk.corp.message.corpconversation.asyncsend',
            {
                'msgtype': msgtype,
                'agent_id': agent_id,
                'msgcontent': msgcontent,
                'userid_list': userid_list,
                'dept_id_list': dept_id_list,
                'to_all_user': to_all_user
            },
            result_processor=lambda x: x['task_id']
        )

    def asyncsend_v2(self, msg_body, agent_id, userid_list=(), dept_id_list=(), to_all_user=False):
        """
        企业会话消息异步发送

        :param msg_body: BodyBase 消息体
        :param agent_id: 微应用的id
        :param userid_list: 接收者的用户userid列表
        :param dept_id_list: 接收者的部门id列表
        :param to_all_user: 是否发送给企业全部用户
        :return: 任务id
        """
        if isinstance(userid_list, (list, tuple, set)):
            userid_list = ",".join(map(to_text, userid_list))
        if isinstance(dept_id_list, (list, tuple, set)):
            dept_id_list = ",".join(map(to_text, dept_id_list))
        if not userid_list:
            userid_list = None
        if not dept_id_list:
            dept_id_list = None
        if isinstance(msg_body, BodyBase):
            msg_body = msg_body.get_dict()
        return self._top_request(
            'dingtalk.oapi.message.corpconversation.asyncsend_v2',
            optionaldict({
                "msg": msg_body,
                'agent_id': agent_id,
                'userid_list': userid_list,
                'dept_id_list': dept_id_list,
                'to_all_user': 'true' if to_all_user else 'false'
            }),
            result_processor=lambda x: x['task_id']
        )

    def recall(self, agent_id, msg_task_id):
        """
        撤回工作通知消息

        :param agent_id: 发送工作通知的微应用agentId
        :param msg_task_id: 发送工作通知返回的taskId
        """
        return self._top_request(
            "dingtalk.oapi.message.corpconversation.recall",
            {"agent_id": agent_id, "msg_task_id": msg_task_id}
        )

    def getsendprogress(self, agent_id, task_id):
        """
        获取异步发送企业会话消息的发送进度

        :param agent_id: 发送消息时使用的微应用的id
        :param task_id: 发送消息时钉钉返回的任务id
        :return:
        """
        return self._top_request(
            'dingtalk.corp.message.corpconversation.getsendprogress',
            {'agent_id': agent_id, 'task_id': task_id},
            result_processor=lambda x: x['progress']
        )

    def getsendresult(self, agent_id=None, task_id=None):
        """
        获取异步向企业会话发送消息的结果

        :param agent_id: 微应用的agentid
        :param task_id: 异步任务的id
        :return:
        """
        return self._top_request(
            'dingtalk.corp.message.corpconversation.getsendresult',
            {'agent_id': agent_id, 'task_id': task_id},
            result_processor=lambda x: x['send_result']
        )

    def asyncsendbycode(self, code, msg_body, agent_id, userid_list=(), dept_id_list=(), to_all_user=False):
        """
        通过用户授权码异步向企业会话发送消息

        :param code: 用户操作产生的授权码
        :param msg_body: BodyBase 消息体
        :param agent_id: 微应用的id
        :param userid_list: 接收者的用户userid列表
        :param dept_id_list: 接收者的部门id列表
        :param to_all_user: 是否发送给企业全部用户
        :return: 任务id
        """
        userid_list = ",".join(map(to_text, userid_list))
        dept_id_list = ",".join(map(to_text, dept_id_list))

        if isinstance(msg_body, BodyBase):
            msg_body = msg_body.get_dict()
        msgtype = msg_body['msgtype']
        msgcontent = json.dumps(msg_body[msgtype])

        return self._top_request(
            'dingtalk.corp.message.corpconversation.asyncsendbycode',
            {
                'msgtype': msgtype,
                'code': code,
                'agent_id': agent_id,
                'msgcontent': msgcontent,
                'userid_list': userid_list,
                'dept_id_list': dept_id_list,
                'to_all_user': to_all_user
            },
            result_processor=lambda x: x['task_id']
        )


================================================
FILE: dingtalk/client/api/microapp.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from dingtalk.client.api.base import DingTalkBaseAPI


class MicroApp(DingTalkBaseAPI):

    def create(self, app_icon, app_name, app_desc, homepage_url, pc_homepage_url=None, omp_link=None):
        """
        创建微应用

        :param app_icon: 微应用的图标。需要调用上传接口将图标上传到钉钉服务器后获取到的mediaId
        :param app_name: 微应用的名称。长度限制为1~10个字符
        :param app_desc: 微应用的描述。长度限制为1~20个字符
        :param homepage_url: 微应用的移动端主页,必须以http开头或https开头
        :param pc_homepage_url: 微应用的PC端主页,必须以http开头或https开头,如果不为空则必须与homepageUrl的域名一致
        :param omp_link: 微应用的OA后台管理主页,必须以http开头或https开头。
        :return: 微应用实例化id
        """
        return self._post(
            '/microapp/create',
            {
                "appIcon": app_icon,
                "appName": app_name,
                "appDesc": app_desc,
                "homepageUrl": homepage_url,
                "pcHomepageUrl": pc_homepage_url,
                "ompLink": omp_link
            },
            result_processor=lambda x: x['agentId']
        )

    def update(self, agent_id, app_icon=None, app_name=None, app_desc=None,
               homepage_url=None, pc_homepage_url=None, omp_link=None):
        """
        更新微应用

        :param agent_id: 微应用实例化id
        :param app_icon: 微应用的图标。需要调用上传接口将图标上传到钉钉服务器后获取到的mediaId
        :param app_name: 微应用的名称。长度限制为1~10个字符
        :param app_desc: 微应用的描述。长度限制为1~20个字符
        :param homepage_url: 微应用的移动端主页,必须以http开头或https开头
        :param pc_homepage_url: 微应用的PC端主页,必须以http开头或https开头,如果不为空则必须与homepageUrl的域名一致
        :param omp_link: 微应用的OA后台管理主页,必须以http开头或https开头。
        :return: 微应用实例化id
        """
        return self._post(
            '/microapp/update',
            {
                "agentId": agent_id,
                "appIcon": app_icon,
                "appName": app_name,
                "appDesc": app_desc,
                "homepageUrl": homepage_url,
                "pcHomepageUrl": pc_homepage_url,
                "ompLink": omp_link
            },
            result_processor=lambda x: x['agentId']
        )

    def delete(self, agent_id):
        """
        删除微应用

        :param agent_id: 微应用实例化id,企业只能删除自建微应用
        :return:
        """
        return self._post(
            '/microapp/delete',
            {'agentId': agent_id}
        )

    def list(self):
        """
        列出微应用

        :return: 微应用列表
        """
        return self._post(
            '/microapp/list',
            result_processor=lambda x: x['appList']
        )

    def list_by_userid(self, userid):
        """
        列出员工可见的微应用

        :return: 微应用列表
        """
        return self._get(
            '/microapp/list_by_userid',
            {'userid': userid},
            result_processor=lambda x: x['appList']
        )

    def visible_scopes(self, agent_id):
        """
        删除微应用

        :param agent_id: 需要查询的微应用实例化agentId
        :return:
        """
        return self._post(
            '/microapp/visible_scopes',
            {'agentId': agent_id}
        )

    def set_visible_scopes(self, agent_id, is_hidden=False, dept_visible_scopes=(), user_visible_scopes=()):
        """
        设置微应用的可见范围

        :param agent_id: 微应用实例化id
        :param is_hidden: 是否仅限管理员可见,true代表仅限管理员可见
        :param dept_visible_scopes: 设置可见的部门id列表
        :param user_visible_scopes: 设置可见的员工id列表
        :return:
        """
        return self._post(
            '/microapp/set_visible_scopes',
            {
                "agentId": agent_id,
                "isHidden": is_hidden,
                "deptVisibleScopes": dept_visible_scopes,
                "userVisibleScopes": user_visible_scopes
            }
        )


================================================
FILE: dingtalk/client/api/report.py
================================================
# encoding: utf-8
from __future__ import absolute_import, unicode_literals

import datetime
import time

from dingtalk.client.api.base import DingTalkBaseAPI


class Report(DingTalkBaseAPI):

    def list(self, start_time, end_time, cursor=0, size=20, template_name='', userid=''):
        """
        查询企业员工发出的日志列表

        :param start_time: 查询起始时间
        :param end_time: 查询截止时间
        :param cursor: 查询游标,初始传入0,后续从上一次的返回值中获取
        :param size: 每页数据量
        :param template_name: 要查询的模板名称
        :param userid: 员工的userid
        """
        if isinstance(start_time, (datetime.date, datetime.datetime)):
            start_time = int(time.mktime(start_time.timetuple()) * 1000)
        if isinstance(end_time, (datetime.date, datetime.datetime)):
            end_time = int(time.mktime(end_time.timetuple()) * 1000)
        return self._top_request(
            "dingtalk.oapi.report.list",
            {
                "start_time": start_time,
                "end_time": end_time,
                "cursor": cursor,
                "size": size,
                "template_name": template_name,
                "userid": userid
            }
        )

    def statistics(self, report_id):
        """
        获取日志统计数据

        :param report_id: 日志id
        """
        return self._top_request(
            "dingtalk.oapi.report.statistics",
            {
                "report_id": report_id
            }
        )

    def statistics_listbytype(self, report_id, _type, offset=0, size=100):
        """
        根据类型获取日志相关人员列表

        :param report_id: 日志id
        :param _type: 查询类型 0:已读人员列表 1:评论人员列表 2:点赞人员列表
        :param offset: 分页查询的游标,最开始传0,后续传返回参数中的next_cursor值,默认值为0
        :param size: 分页参数,每页大小,最多传100,默认值为100
        """
        return self._top_request(
            "dingtalk.oapi.report.statistics.listbytype",
            {
                "report_id": report_id,
                "type": _type,
                "offset": offset,
                "size": size
            }
        )

    def receiver_list(self, report_id, offset=0, size=100):
        """
        获取日志分享人员列表

        :param report_id: 日志id
        :param offset: 分页查询的游标,最开始传0,后续传返回参数中的next_cursor值,默认值为0
        :param size: 分页参数,每页大小,最多传100,默认值为100
        """
        return self._top_request(
            "dingtalk.oapi.report.receiver.list",
            {
                "report_id": report_id,
                "offset": offset,
                "size": size
            }
        )

    def comment_list(self, report_id, offset=0, size=20):
        """
        获取日志评论详情

        :param report_id: 日志id
        :param offset: 分页查询的游标,最开始传0,后续传返回参数中的next_cursor值,默认值为0
        :param size: 分页参数,每页大小,最多传20,默认值为20
        """
        return self._top_request(
            "dingtalk.oapi.report.comment.list",
            {
                "report_id": report_id,
                "offset": offset,
                "size": size
            }
        )

    def getunreadcount(self, userid=''):
        """
        查询企业员工的日志未读数

        :param userid: 员工id
        """
        return self._top_request(
            "dingtalk.oapi.report.getunreadcount",
            {"userid": userid},
            result_processor=lambda x: x['count']
        )

    def template_listbyuserid(self, userid='', offset=0, size=100):
        """
        根据用户id获取可见的日志模板列表

        :param userid: 员工userId, 不传递表示获取所有日志模板
        :param offset: 分页游标,从0开始。根据返回结果里的next_cursor是否为空来判断是否还有下一页,且再次调用时offset设置成next_cursor的值
        :param size: 分页大小,最大可设置成100
        """
        return self._top_request(
            "dingtalk.oapi.report.template.listbyuserid",
            {
                "userid": userid,
                "offset": offset,
                "size": size
            }
        )


================================================
FILE: dingtalk/client/api/role.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from dingtalk.core.utils import to_text

from dingtalk.client.api.base import DingTalkBaseAPI


class Role(DingTalkBaseAPI):

    def simplelist(self, role_id, offset=0, size=20):
        """
        获取角色的员工列表

        :param role_id: 角色ID
        :param offset: 分页大小
        :param size: 分页偏移
        :return:
        """
        return self._top_request(
            'dingtalk.corp.role.simplelist',
            {'role_id': role_id, 'offset': offset, 'size': size}
        )

    def list(self, offset=0, size=20):
        """
        获取企业角色列表

        :param offset: 分页大小
        :param size: 分页偏移
        :return:
        """
        return self._top_request(
            'dingtalk.corp.role.list',
            {'offset': offset, 'size': size}
        )

    def addrolesforemps(self, rolelid_list, userid_list):
        """
        批量为员工增加角色信息

        :param rolelid_list: 角色id list
        :param userid_list: 员工id list
        :return:
        """
        if isinstance(rolelid_list, (list, tuple, set)):
            rolelid_list = ','.join(map(to_text, rolelid_list))
        if isinstance(userid_list, (list, tuple, set)):
            userid_list = ','.join(map(to_text, userid_list))
        return self._top_request(
            'dingtalk.corp.role.addrolesforemps',
            {'rolelid_list': rolelid_list, 'userid_list': userid_list}
        )

    def removerolesforemps(self, rolelid_list, userid_list):
        """
        批量删除员工角的色信息

        :param rolelid_list: 角色id list
        :param userid_list: 员工id list
        :return:
        """
        if isinstance(rolelid_list, (list, tuple, set)):
            rolelid_list = ','.join(map(to_text, rolelid_list))
        if isinstance(userid_list, (list, tuple, set)):
            userid_list = ','.join(map(to_text, userid_list))
        return self._top_request(
            'dingtalk.corp.role.removerolesforemps',
            {'rolelid_list': rolelid_list, 'userid_list': userid_list}
        )

    def deleterole(self, role_id):
        """
        删除角色信息

        :param role_id: 角色id
        :return:
        """
        return self._top_request(
            'dingtalk.corp.role.deleterole',
            {'role_id': role_id}
        )

    def getrolegroup(self, group_id):
        """
        获取角色组信息

        :param group_id: 角色组的Id
        :return:
        """
        return self._top_request(
            'dingtalk.corp.role.getrolegroup',
            {'group_id': group_id},
            result_processor=lambda x: x['role_group']
        )

    def getrole(self, role_id):
        """
        获取角色详情

        :param role_id: 角色id
        """
        return self._top_request(
            "dingtalk.oapi.role.getrole",
            {
                "roleId": role_id
            }
        )

    def add_role(self, role_name, group_id):
        """
        创建角色

        :param role_name: 角色名称
        :param group_id: 角色组id
        """
        return self.post(
            "/role/add_role",
            {
                "roleName": role_name,
                "groupId": group_id
            }
        )

    def update_role(self, role_name, group_id):
        """
        更新角色

        :param role_name: 角色名称
        :param group_id: 角色组id
        """
        return self.post(
            "/role/update_role",
            {
                "roleName": role_name,
                "groupId": group_id
            }
        )

    def add_role_group(self, name):
        """
        创建角色组

        :param name: 角色组名称
        """
        return self.post(
            "/role/add_role_group",
            {"name": name},
            result_processor=lambda x: x['groupId']
        )


================================================
FILE: dingtalk/client/api/taobao.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from dingtalk.client.api.base import DingTalkBaseAPI


class TbDingDing(DingTalkBaseAPI):
    """
    钉钉API
    """

    def dingtalk_corp_message_corpconversation_sendmock(
            self,
            microapp_agent_id,
            to_user,
            to_party,
            message_type,
            message
    ):
        """
        企业会话消息发送
        测试接入top是否有问题
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=27851

        :param microapp_agent_id: 微应用agentId
        :param to_user: 消息接收者userid列表
        :param to_party: 消息接收者部门列表
        :param message_type: 消息类型
        :param message: 消息体
        """
        return self._top_request(
            "dingtalk.corp.message.corpconversation.sendmock",
            {
                "microapp_agent_id": microapp_agent_id,
                "to_user": to_user,
                "to_party": to_party,
                "message_type": message_type,
                "message": message
            }
        )

    def dingtalk_corp_emp_search(
            self,
            keyword='',
            offset='',
            size=''
    ):
        """
        企业通讯录员工搜索
        钉钉企业通讯录搜索接口, 支持翻页
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=27910

        :param keyword: 搜索关键字
        :param offset: 偏移量
        :param size: 请求数量
        """
        return self._top_request(
            "dingtalk.corp.emp.search",
            {
                "keyword": keyword,
                "offset": offset,
                "size": size
            }
        )

    def dingtalk_corp_ext_add(
            self,
            contact
    ):
        """
        添加企业外部联系人
        钉钉企业外部通讯录, 添加外部联系人
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=28177

        :param contact: 外部联系人信息
        """
        return self._top_request(
            "dingtalk.corp.ext.add",
            {
                "contact": contact
            },
            result_processor=lambda x: x["userid"]
        )

    def dingtalk_corp_ext_list(
            self,
            size='20',
            offset='0'
    ):
        """
        外部联系人列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=28178

        :param size: 分页大小, 最大100
        :param offset: 偏移位置
        """
        return self._top_request(
            "dingtalk.corp.ext.list",
            {
                "size": size,
                "offset": offset
            }
        )

    def dingtalk_corp_ext_listlabelgroups(
            self,
            size='20',
            offset='0'
    ):
        """
        标签列表
        拉取标签列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=28179

        :param size: 分页大小,最大100
        :param offset: 偏移位置
        """
        return self._top_request(
            "dingtalk.corp.ext.listlabelgroups",
            {
                "size": size,
                "offset": offset
            }
        )

    def dingtalk_corp_encryption_key_list(
            self
    ):
        """
        企业密钥列表
        查询企业密钥列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=28386

        """
        return self._top_request(
            "dingtalk.corp.encryption.key.list"
        )

    def dingtalk_corp_conference_details_query(
            self,
            since_time='',
            limit='',
            caller_user_id='',
            member_user_id=''
    ):
        """
        钉钉企业电话会议详情记录查询
        查询企业电话会议详情记录
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=28418

        :param since_time: 查询起始时间
        :param limit: 查询个数,上限100
        :param caller_user_id: 主叫userId
        :param member_user_id: 成员userId
        """
        return self._top_request(
            "dingtalk.corp.conference.details.query",
            {
                "since_time": since_time,
                "limit": limit,
                "caller_user_id": caller_user_id,
                "member_user_id": member_user_id
            }
        )

    def dingtalk_corp_ext_update(
            self,
            contact
    ):
        """
        更新外部联系人
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=28531

        :param contact: 外部联系人信息
        """
        return self._top_request(
            "dingtalk.corp.ext.update",
            {
                "contact": contact
            }
        )

    def dingtalk_corp_conversation_corpconversion_listmember(
            self,
            open_conversation_id,
            offset,
            count
    ):
        """
        获取企业群群成员接口
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=28620

        :param open_conversation_id: 群组id
        :param offset: 群成员列表偏移量
        :param count: 本次请求获取群成员的大小,最大为100
        """
        return self._top_request(
            "dingtalk.corp.conversation.corpconversion.listmember",
            {
                "open_conversation_id": open_conversation_id,
                "offset": offset,
                "count": count
            }
        )

    def dingtalk_corp_conversation_corpconversion_getconversation(
            self,
            open_conversation_id
    ):
        """
        获取企业群基本信息
        获取企业群基本信息接口
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=28621

        :param open_conversation_id: 群组ID
        """
        return self._top_request(
            "dingtalk.corp.conversation.corpconversion.getconversation",
            {
                "open_conversation_id": open_conversation_id
            }
        )

    def dingtalk_corp_message_corpconversation_asyncsend(
            self,
            msgtype,
            agent_id,
            msgcontent,
            userid_list='',
            dept_id_list='',
            to_all_user='false'
    ):
        """
        企业会话消息异步发送
        企业会话消息异步发送接口
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=28915

        :param msgtype: 消息类型,如text、file、oa等,具体见文档
        :param agent_id: 微应用的id
        :param msgcontent: 与msgtype对应的消息体,具体见文档
        :param userid_list: 接收者的用户userid列表
        :param dept_id_list: 接收者的部门id列表
        :param to_all_user: 是否发送给企业全部用户
        """
        return self._top_request(
            "dingtalk.corp.message.corpconversation.asyncsend",
            {
                "msgtype": msgtype,
                "agent_id": agent_id,
                "msgcontent": msgcontent,
                "userid_list": userid_list,
                "dept_id_list": dept_id_list,
                "to_all_user": to_all_user
            }
        )

    def dingtalk_corp_message_corpconversation_getsendprogress(
            self,
            agent_id,
            task_id
    ):
        """
        获取异步发送企业会话消息的发送进度
        获取异步发送企业会话消息的进度
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=28917

        :param agent_id: 发送消息时使用的微应用的id
        :param task_id: 发送消息时钉钉返回的任务id
        """
        return self._top_request(
            "dingtalk.corp.message.corpconversation.getsendprogress",
            {
                "agent_id": agent_id,
                "task_id": task_id
            }
        )

    def dingtalk_corp_message_corpconversation_getsendresult(
            self,
            agent_id='',
            task_id=''
    ):
        """
        获取异步向企业会话发送消息的结果
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=28918

        :param agent_id: 微应用的agentid
        :param task_id: 异步任务的id
        """
        return self._top_request(
            "dingtalk.corp.message.corpconversation.getsendresult",
            {
                "agent_id": agent_id,
                "task_id": task_id
            }
        )

    def dingtalk_corp_message_corpconversation_asyncsendbycode(
            self,
            msgtype,
            agent_id,
            msgcontent,
            code,
            user_id_list='',
            dept_id_list='',
            to_all_user='false'
    ):
        """
        通过用户授权码异步向企业会话发送消息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=28919

        :param msgtype: 消息类型,如text、file、oa等,具体见文档
        :param agent_id: 微应用的id
        :param msgcontent: 与msgtype对应的消息体,具体见文档
        :param code: 用户操作产生的授权码
        :param user_id_list: 接收者的用户userid列表
        :param dept_id_list: 接收者的部门id列表
        :param to_all_user: 是否发送给企业全部用户
        """
        return self._top_request(
            "dingtalk.corp.message.corpconversation.asyncsendbycode",
            {
                "msgtype": msgtype,
                "agent_id": agent_id,
                "msgcontent": msgcontent,
                "code": code,
                "user_id_list": user_id_list,
                "dept_id_list": dept_id_list,
                "to_all_user": to_all_user
            }
        )

    def dingtalk_corp_chatbot_createorgbot(
            self,
            create_chat_bot_model
    ):
        """
        isv为企业创建企业机器人
        给ISV提供为企业创建机器人的接口
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=28964

        :param create_chat_bot_model: 创建机器人modle
        """
        return self._top_request(
            "dingtalk.corp.chatbot.createorgbot",
            {
                "create_chat_bot_model": create_chat_bot_model
            }
        )

    def dingtalk_isv_call_getuserlist(
            self,
            start='0',
            offset='200'
    ):
        """
        dingtalk.isv.call.getuserlist
        删除ISV套件对应的企业下的可以主动调用接口发起免费电话的员工
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29002

        :param start: 游标开始值
        :param offset: 批量值
        """
        return self._top_request(
            "dingtalk.isv.call.getuserlist",
            {
                "start": start,
                "offset": offset
            }
        )

    def dingtalk_isv_call_calluser(
            self,
            staff_id,
            authed_corp_id,
            authed_staff_id
    ):
        """
        主叫方发起免费电话给授权企业下的授权范围内的人员
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29003

        :param staff_id: isv套件所属企业下的员工userid
        :param authed_corp_id: 授权isv套件企业的corpid
        :param authed_staff_id: 授权isv套件企业的员工userid
        """
        return self._top_request(
            "dingtalk.isv.call.calluser",
            {
                "staff_id": staff_id,
                "authed_corp_id": authed_corp_id,
                "authed_staff_id": authed_staff_id
            }
        )

    def dingtalk_isv_call_setuserlist(
            self,
            staff_id_list
    ):
        """
        设置isv发起免费电话的主叫白名单
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29004

        :param staff_id_list: 套件所所属企业免费电话主叫人员工号列表
        """
        return self._top_request(
            "dingtalk.isv.call.setuserlist",
            {
                "staff_id_list": staff_id_list
            }
        )

    def dingtalk_isv_call_removeuserlist(
            self,
            staff_id_list
    ):
        """
        删除isv免费电话员工名单
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29005

        :param staff_id_list: 要删除的员工userid列表
        """
        return self._top_request(
            "dingtalk.isv.call.removeuserlist",
            {
                "staff_id_list": staff_id_list
            }
        )

    def dingtalk_corp_chatbot_updateorgbot(
            self,
            icon,
            name,
            chatbot_id
    ):
        """
        修改企业机器人
        小蜜isv修改机器人名字头像接口。(接口只给小蜜用,机器人应用会白名单处理)
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29054

        :param icon: 头像的mediaId
        :param name: 机器人名字
        :param chatbot_id: 创建时返回的机器人Id
        """
        return self._top_request(
            "dingtalk.corp.chatbot.updateorgbot",
            {
                "icon": icon,
                "name": name,
                "chatbot_id": chatbot_id
            }
        )

    def dingtalk_corp_chatbot_listorgbot(
            self,
            agent_id,
            type
    ):
        """
        机器人查询接口
        小蜜isv查询给企业创建的机器人接口。(接口只给小蜜用,机器人应用会白名单处理)
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29055

        :param agent_id: 微应用id
        :param type: 钉钉分配的类型
        """
        return self._top_request(
            "dingtalk.corp.chatbot.listorgbot",
            {
                "agent_id": agent_id,
                "type": type
            }
        )

    def dingtalk_corp_chatbot_listorgbotbytypeandbottype(
            self,
            type,
            bot_type
    ):
        """
        通过机器人type和botType查询机器人接口
        小蜜isv查询给企业创建的机器人接口。(接口只给小蜜用,机器人应用会白名单处理)
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29081

        :param type: 机器人类型(钉钉分配)
        :param bot_type: 2-企业对内机器人,3-企业对外机器人
        """
        return self._top_request(
            "dingtalk.corp.chatbot.listorgbotbytypeandbottype",
            {
                "type": type,
                "bot_type": bot_type
            }
        )

    def dingtalk_smartwork_attends_listschedule(
            self,
            work_date,
            offset='0',
            size='200'
    ):
        """
        考勤排班信息按天全量查询接口
        按天查询企业考勤排班全量信息,使用分页功能
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29082

        :param work_date: 排班时间,只取年月日部分
        :param offset: 偏移位置
        :param size: 分页大小,最大200
        """
        return self._top_request(
            "dingtalk.smartwork.attends.listschedule",
            {
                "work_date": work_date,
                "offset": offset,
                "size": size
            }
        )

    def dingtalk_smartwork_attends_getsimplegroups(
            self,
            offset='0',
            size='10'
    ):
        """
        获取考勤组列表详情
        获取公司自身的考勤组列表详情信息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29083

        :param offset: 偏移位置
        :param size: 分页大小,最大10
        """
        return self._top_request(
            "dingtalk.smartwork.attends.getsimplegroups",
            {
                "offset": offset,
                "size": size
            }
        )

    def dingtalk_corp_role_simplelist(
            self,
            role_id,
            size='20',
            offset='0'
    ):
        """
        获取角色的员工列表
        获取企业中角色下的员工列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29204

        :param role_id: 角色ID
        :param size: 分页大小
        :param offset: 分页偏移
        """
        return self._top_request(
            "dingtalk.corp.role.simplelist",
            {
                "role_id": role_id,
                "size": size,
                "offset": offset
            }
        )

    def dingtalk_corp_role_list(
            self,
            size='20',
            offset='0'
    ):
        """
        获取企业角色列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29205

        :param size: 分页大小
        :param offset: 分页偏移
        """
        return self._top_request(
            "dingtalk.corp.role.list",
            {
                "size": size,
                "offset": offset
            }
        )

    def dingtalk_smartwork_bpms_processinstance_create(
            self,
            process_code,
            originator_user_id,
            dept_id,
            approvers,
            form_component_values,
            agent_id='',
            cc_list='',
            cc_position=''
    ):
        """
        发起审批实例
        企业或isv调用该api,来发起一个审批实例
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29498

        :param process_code: 审批流的唯一码
        :param originator_user_id: 审批实例发起人的userid
        :param dept_id: 发起人所在的部门
        :param approvers: 审批人userid列表
        :param form_component_values: 审批流表单参数
        :param agent_id: 企业微应用标识
        :param cc_list: 抄送人userid列表
        :param cc_position: 抄送时间,分为(START,FINISH,START_FINISH)
        """
        return self._top_request(
            "dingtalk.smartwork.bpms.processinstance.create",
            {
                "process_code": process_code,
                "originator_user_id": originator_user_id,
                "dept_id": dept_id,
                "approvers": approvers,
                "form_component_values": form_component_values,
                "agent_id": agent_id,
                "cc_list": cc_list,
                "cc_position": cc_position
            }
        )

    def dingtalk_smartwork_checkin_record_get(
            self,
            userid_list,
            start_time,
            end_time,
            cursor,
            size
    ):
        """
        获取多个用户的签到记录
        查询多个用户一段时间范围内的签到记录,只给企业调用,ISV无法调用。
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29538

        :param userid_list: 需要查询的用户列表
        :param start_time: 起始时间,单位毫秒
        :param end_time: 截止时间,单位毫秒。如果是取1个人的数据,时间范围最大到10天,如果是取多个人的数据,时间范围最大1天。
        :param cursor: 分页查询的游标,最开始可以传0
        :param size: 分页查询的每页大小,最大100
        """
        return self._top_request(
            "dingtalk.smartwork.checkin.record.get",
            {
                "userid_list": userid_list,
                "start_time": start_time,
                "end_time": end_time,
                "cursor": cursor,
                "size": size
            }
        )

    def dingtalk_smartwork_bpms_process_sync(
            self,
            agent_id,
            src_process_code,
            target_process_code,
            biz_category_id='',
            process_name=''
    ):
        """
        更新审批流
        ISV调用该接口,可以更新对应授权企业的审批单
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29766

        :param agent_id: 企业微应用标识
        :param src_process_code: 源审批流的唯一码
        :param target_process_code: 目标审批流的唯一码
        :param biz_category_id: 业务分类标识(建议采用JAVA包名的命名方式,如:com.alibaba)
        :param process_name: 审批流名称
        """
        return self._top_request(
            "dingtalk.smartwork.bpms.process.sync",
            {
                "agent_id": agent_id,
                "src_process_code": src_process_code,
                "target_process_code": target_process_code,
                "biz_category_id": biz_category_id,
                "process_name": process_name
            }
        )

    def dingtalk_smartwork_bpms_processinstance_list(
            self,
            process_code,
            start_time,
            end_time='',
            size='10',
            cursor='0',
            userid_list=''
    ):
        """
        获取审批实例列表
        企业可以根据审批流的唯一标识,分页获取该审批流对应的审批实例。只能取到权限范围内的相关部门的审批实例
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29833

        :param process_code: 流程模板唯一标识,可在oa后台编辑审批表单部分查询
        :param start_time: 审批实例开始时间,毫秒级
        :param end_time: 审批实例结束时间,毫秒级,默认取当前值
        :param size: 分页参数,每页大小,最多传10
        :param cursor: 分页查询的游标,最开始传0,后续传返回参数中的next_cursor值
        :param userid_list: 发起人用户id列表
        """
        return self._top_request(
            "dingtalk.smartwork.bpms.processinstance.list",
            {
                "process_code": process_code,
                "start_time": start_time,
                "end_time": end_time,
                "size": size,
                "cursor": cursor,
                "userid_list": userid_list
            }
        )

    def dingtalk_corp_role_deleterole(
            self,
            role_id
    ):
        """
        删除角色信息
        企业在做企业内部组织结构角色管理的时候,如果需要删除该企业下某个角色信息,可以调用该接口。调用的前提是该角色下面的所有员工都已经被删除该角色
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29977

        :param role_id: 角色id
        """
        return self._top_request(
            "dingtalk.corp.role.deleterole",
            {
                "role_id": role_id
            }
        )

    def dingtalk_corp_role_getrolegroup(
            self,
            group_id
    ):
        """
        获取角色组信息
        该接口通过groupId参数可以获取该角色组详细信息以及下面所有关联的角色的信息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29978

        :param group_id: 角色组的Id
        """
        return self._top_request(
            "dingtalk.corp.role.getrolegroup",
            {
                "group_id": group_id
            }
        )

    def dingtalk_corp_role_addrolesforemps(
            self,
            rolelid_list,
            userid_list
    ):
        """
        批量为员工增加角色信息
        企业在做企业员工管理的时候,需要对部分员工进行角色分类,该接口可以批量为员工增加角色信息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29979

        :param rolelid_list: 角色id list
        :param userid_list: 员工id list
        """
        return self._top_request(
            "dingtalk.corp.role.addrolesforemps",
            {
                "rolelid_list": rolelid_list,
                "userid_list": userid_list
            }
        )

    def dingtalk_corp_role_removerolesforemps(
            self,
            roleid_list,
            userid_list
    ):
        """
        批量删除员工角的色信息
        企业在做企业员工管理的时候,需要对部分员工进行角色分类,该接口可以批量删除员工的角色信息。 角色在钉钉的组织结构里面就是标签的意思,你可以批量为一批用户添加一批角色信息(dingtalk.corp.role.addrolesforemps),那么调用该接口就可以批量删除已经存在的角色和员工对应关系,角色和员工是多对多的关系。参考代码如下: req.setRolelidList('1,2,3,4,5'); // 已经存在的角色id列表 req.setUseridList('a,b,c,d,e'); // 用户的id列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=29980

        :param roleid_list: 角色标签id
        :param userid_list: 用户userId
        """
        return self._top_request(
            "dingtalk.corp.role.removerolesforemps",
            {
                "roleid_list": roleid_list,
                "userid_list": userid_list
            }
        )

    def dingtalk_corp_invoice_gettitle(
            self
    ):
        """
        获取企业开票抬头信息
        该接口通过orgId参数可以获取该企业的发票抬头信息。
        注意:ISV必须先加入白名单
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=30318

        """
        return self._top_request(
            "dingtalk.corp.invoice.gettitle"
        )

    def dingtalk_corp_device_manage_get(
            self,
            device_service_id,
            device_id
    ):
        """
        获取单设备详情
        ISV或者企业通过deviceId来获取设备详情
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=30500

        :param device_service_id: 设备服务商ID
        :param device_id: 设备ID
        """
        return self._top_request(
            "dingtalk.corp.device.manage.get",
            {
                "device_service_id": device_service_id,
                "device_id": device_id
            }
        )

    def dingtalk_corp_device_manage_querylist(
            self,
            device_service_id,
            cursor,
            size
    ):
        """
        拉取企业下某类设备列表
        此接口用于展示企业已经绑定的设备列表(分页接口)
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=30501

        :param device_service_id: 设备服务商ID
        :param cursor: 分页拉取设备列表的游标,首次拉取可传Null或者0
        :param size: 单次请求的大小,最大不超过20
        """
        return self._top_request(
            "dingtalk.corp.device.manage.querylist",
            {
                "device_service_id": device_service_id,
                "cursor": cursor,
                "size": size
            }
        )

    def dingtalk_corp_device_nick_update(
            self,
            device_service_id,
            device_id,
            new_nick
    ):
        """
        更改设备昵称
        修改企业绑定的智能硬件对应的昵称
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=30514

        :param device_service_id: 设备服务商ID
        :param device_id: 设备ID
        :param new_nick: 设备新昵称
        """
        return self._top_request(
            "dingtalk.corp.device.nick.update",
            {
                "device_service_id": device_service_id,
                "device_id": device_id,
                "new_nick": new_nick
            }
        )

    def dingtalk_corp_device_manage_unbind(
            self,
            device_service_id,
            device_id
    ):
        """
        设备解绑
        此接口用于解绑已经绑定到xx企业的某个设备
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=30530

        :param device_service_id: 设备服务商ID
        :param device_id: 设备ID
        """
        return self._top_request(
            "dingtalk.corp.device.manage.unbind",
            {
                "device_service_id": device_service_id,
                "device_id": device_id
            }
        )

    def dingtalk_corp_user_personainfo_get(
            self,
            userid
    ):
        """
        用户画像
        用户画像,包括用户性别,工作行业属性等
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=31620

        :param userid: 员工id
        """
        return self._top_request(
            "dingtalk.corp.user.personainfo.get",
            {
                "userid": userid
            }
        )

    def dingtalk_corp_report_list(
            self,
            start_time,
            end_time,
            cursor,
            size,
            template_name='',
            userid=''
    ):
        """
        查询企业员工发出的日志列表
        企业可以根据员工userid或者日志模板名称,分页获取员工一段时间范围内在【日志】微应用发送的日志详细信息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=31998

        :param start_time: 查询起始时间
        :param end_time: 查询截止时间
        :param cursor: 查询游标,初始传入0,后续从上一次的返回值中获取
        :param size: 每页数据量
        :param template_name: 要查询的模板名称
        :param userid: 员工的userid
        """
        return self._top_request(
            "dingtalk.corp.report.list",
            {
                "start_time": start_time,
                "end_time": end_time,
                "cursor": cursor,
                "size": size,
                "template_name": template_name,
                "userid": userid
            }
        )

    def dingtalk_corp_chatbot_addchatbotinstance(
            self,
            chatbot_id,
            open_conversation_id,
            name='',
            icon_media_id=''
    ):
        """
        向群添加机器人接口
        企业应用,向自己的企业群,添加已安装的企业机器人
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=32058

        :param chatbot_id: 机器人id,由钉钉事先分配
        :param open_conversation_id: 创建群时返回的openConvsationId
        :param name: 机器人名字(如果为空,默认是机器人安装时的名字)
        :param icon_media_id: 机器人头像(如果为空,默认是机器人安装时的头像)
        """
        return self._top_request(
            "dingtalk.corp.chatbot.addchatbotinstance",
            {
                "chatbot_id": chatbot_id,
                "open_conversation_id": open_conversation_id,
                "name": name,
                "icon_media_id": icon_media_id
            }
        )

    def dingtalk_smartwork_attends_getleaveapproveduration(
            self,
            userid,
            from_date,
            to_date
    ):
        """
        计算请假时长
        钉钉考勤微应用,提供了排班的功能,企业管理员可以设置排班规则,该接口可以自动根据排班规则统计出每个员工的请假时长,进而可以与企业自有的请假/财务系统对接,进行工资统计,如果您的企业使用了钉钉考勤并希望依赖考勤系统自动计算员工请假时长,可选择使用此接口
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=32125

        :param userid: 员工在企业内的UserID,企业用来唯一标识用户的字段。
        :param from_date: 请假开始时间
        :param to_date: 请假结束时间
        """
        return self._top_request(
            "dingtalk.smartwork.attends.getleaveapproveduration",
            {
                "userid": userid,
                "from_date": from_date,
                "to_date": to_date
            }
        )

    def dingtalk_smartwork_attends_getusergroup(
            self,
            userid
    ):
        """
        获取用户考勤组
        在钉钉考勤微应用中,考勤组是一类具有相同的班次、考勤位置等考勤规则的人或部门的组合,一个企业中的一个人只能属于一个考勤组。如果您的企业使用了钉钉考勤并希望获取员工的考勤组信息,可选择使用此接口
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=32308

        :param userid: 员工在企业内的UserID,企业用来唯一标识用户的字段。
        """
        return self._top_request(
            "dingtalk.smartwork.attends.getusergroup",
            {
                "userid": userid
            }
        )

    def dingtalk_corp_calendar_create(
            self,
            create_vo=None
    ):
        """
        创建日程
        通过此接口可以把企业员工的待办事项导入到钉钉日历并在钉钉日历中展示, 支持任务, 会议,审批,普通日程等.
        该接口处于内部灰度阶段, 申请使用请邮件联系: zhaoting.yht@alibaba-inc.com
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=32840

        :param create_vo: 创建日程实体
        """
        return self._top_request(
            "dingtalk.corp.calendar.create",
            {
                "create_vo": create_vo
            }
        )

    def dingtalk_corp_ding_create(
            self,
            creator_userid,
            receiver_userids,
            remind_type,
            remind_time,
            text_content,
            attachment=None
    ):
        """
        发DING通知
        通过此接口发DING通知给企业内部员工, 支持短信DING和应用内DING.
        该接口正在灰度内测中, 暂不对外开放
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=32841

        :param creator_userid: 发送者工号
        :param receiver_userids: 接收者工号列表
        :param remind_type: 提醒类型:1-应用内;2-短信
        :param remind_time: 发送时间(单位:毫秒)
        :param text_content: 通知内容
        :param attachment: 附件内容
        """
        return self._top_request(
            "dingtalk.corp.ding.create",
            {
                "creator_userid": creator_userid,
                "receiver_userids": receiver_userids,
                "remind_type": remind_type,
                "remind_time": remind_time,
                "text_content": text_content,
                "attachment": attachment
            }
        )

    def dingtalk_smartwork_bpms_processinstance_get(
            self,
            process_instance_id
    ):
        """
        获取单个审批实例详情
        根据审批实例id,获取审批实例详情,详情包括审批表单信息、操作记录列表、操作人、抄送人、审批任务列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=32977

        :param process_instance_id: 审批实例id
        """
        return self._top_request(
            "dingtalk.smartwork.bpms.processinstance.get",
            {
                "process_instance_id": process_instance_id
            }
        )

    def dingtalk_corp_chatbot_install(
            self,
            chatbot_vo
    ):
        """
        ISV给企业安装机器人
        企业安装微应用后,ISV可通过本接口给企业上架一个企业机器人。目前灰度几个ISV,机器人应用会白名单处理
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33009

        :param chatbot_vo: 安装的机器人信息
        """
        return self._top_request(
            "dingtalk.corp.chatbot.install",
            {
                "chatbot_vo": chatbot_vo
            }
        )

    def dingtalk_corp_chatbot_updatebychatbotid(
            self,
            update_type,
            icon='',
            name='',
            chatbot_id='',
            preview_media_id='',
            description='',
            breif=''
    ):
        """
        ISV变更企业已安装机器人的名字或头像
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33010

        :param update_type: 更新名字或头像时是否更新群里已添加机器人的名字或头像。         * 0-不更新群里机器人名字或头像         * 1-更新群里机器人名字或头像
        :param icon: 机器人头像
        :param name: 机器人名字
        :param chatbot_id: 机器人id(钉钉分配)
        :param preview_media_id: 机器人预览图
        :param description: 机器人详细描述
        :param breif: 机器人简单描述
        """
        return self._top_request(
            "dingtalk.corp.chatbot.updatebychatbotid",
            {
                "update_type": update_type,
                "icon": icon,
                "name": name,
                "chatbot_id": chatbot_id,
                "preview_media_id": preview_media_id,
                "description": description,
                "breif": breif
            }
        )

    def dingtalk_corp_chatbot_listbychatbotids(
            self,
            chatbot_ids
    ):
        """
        isv查询企业已安装的企业机器人
        ISV根据chatbotId查询给企业已安装的机器人信息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33011

        :param chatbot_ids: chatbotId列表
        """
        return self._top_request(
            "dingtalk.corp.chatbot.listbychatbotids",
            {
                "chatbot_ids": chatbot_ids
            }
        )

    def dingtalk_corp_extcontact_create(
            self,
            contact
    ):
        """
        外部联系人添加
        添加企业外部联系人
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33400

        :param contact: 外部联系人信息
        """
        return self._top_request(
            "dingtalk.corp.extcontact.create",
            {
                "contact": contact
            }
        )

    def dingtalk_corp_smartdevice_hasface(
            self,
            userid_list
    ):
        """
        查询企业员工是否已录入人脸
        开通人脸识别的企业中,会存在部分用户录入照片,此接口用于批量查看员工是否已录入照片
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33401

        :param userid_list: 查询用userid列表
        """
        return self._top_request(
            "dingtalk.corp.smartdevice.hasface",
            {
                "userid_list": userid_list
            }
        )

    def dingtalk_corp_extcontact_list(
            self,
            size='20',
            offset='0'
    ):
        """
        外部联系人列表
        获取企业外部联系人列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33402

        :param size: 分页大小, 最大100
        :param offset: 偏移位置
        """
        return self._top_request(
            "dingtalk.corp.extcontact.list",
            {
                "size": size,
                "offset": offset
            }
        )

    def dingtalk_corp_extcontact_update(
            self,
            contact
    ):
        """
        外部联系人更新
        更新企业外部联系人
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33403

        :param contact: 外部联系人信息
        """
        return self._top_request(
            "dingtalk.corp.extcontact.update",
            {
                "contact": contact
            }
        )

    def dingtalk_corp_extcontact_get(
            self,
            user_id
    ):
        """
        外部联系人详情
        获取企业外部联系人详情
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33404

        :param user_id: userId
        """
        return self._top_request(
            "dingtalk.corp.extcontact.get",
            {
                "user_id": user_id
            }
        )

    def dingtalk_corp_extcontact_delete(
            self,
            userid
    ):
        """
        外部联系人删除
        删除企业外部联系人
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33405

        :param userid: userId
        """
        return self._top_request(
            "dingtalk.corp.extcontact.delete",
            {
                "userid": userid
            }
        )

    def dingtalk_corp_extcontact_listlabelgroups(
            self,
            size='20',
            offset='0'
    ):
        """
        外部联系人标签列表
        获取企业外部联系人标签列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33406

        :param size: 分页大小,最大100
        :param offset: 偏移位置
        """
        return self._top_request(
            "dingtalk.corp.extcontact.listlabelgroups",
            {
                "size": size,
                "offset": offset
            }
        )

    def dingtalk_corp_device_manage_hasbinddevice(
            self,
            device_service_id
    ):
        """
        查询是否绑定某个设备产品
        允许开发者查询企业是否绑定了某个类型的钉钉智能硬件设备
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33410

        :param device_service_id: 设备产品类型 产品编码:M1:9 C1:14 M2:15 D1:24
        """
        return self._top_request(
            "dingtalk.corp.device.manage.hasbinddevice",
            {
                "device_service_id": device_service_id
            }
        )

    def dingtalk_corp_smartdevice_addface(
            self,
            face_vo
    ):
        """
        向企业员工添加人脸识别照片
        为用户添加识别照片,以及指定在终端上识别的有效期,指定用户类型对应识别提示语
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33411

        :param face_vo: 识别用户数据
        """
        return self._top_request(
            "dingtalk.corp.smartdevice.addface",
            {
                "face_vo": face_vo
            }
        )

    def dingtalk_corp_smartdevice_addrecognizenotify(
            self,
            notify_vo
    ):
        """
        添加用户识别成功后的通知
        当M2成功识别指定用户后,如需向指定用户发消息通知,使用些接口
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33417

        :param notify_vo: 通知数据
        """
        return self._top_request(
            "dingtalk.corp.smartdevice.addrecognizenotify",
            {
                "notify_vo": notify_vo
            }
        )

    def dingtalk_corp_smartdevice_receptionist_pushinfo(
            self,
            microapp_agent_id,
            desc_template,
            desc_content
    ):
        """
        智能前台消息推送
        智能前台开放部分功能区块,区块内的显示信息由isv基于企业不同推送展示消息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33418

        :param microapp_agent_id: 微应用agentID
        :param desc_template: 智能前台信息展示模板ID,需要向智能硬件团队申请
        :param desc_content: 展示模板需要的变量数据
        """
        return self._top_request(
            "dingtalk.corp.smartdevice.receptionist.pushinfo",
            {
                "microapp_agent_id": microapp_agent_id,
                "desc_template": desc_template,
                "desc_content": desc_content
            }
        )

    def dingtalk_corp_hrm_employee_get(
            self,
            userid
    ):
        """
        获取智能人事员工花名册详细数据
        获取智能人事指定员工花名册详细数据
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33453

        :param userid: 查询用户userid
        """
        return self._top_request(
            "dingtalk.corp.hrm.employee.get",
            {
                "userid": userid
            }
        )

    def dingtalk_smartwork_blackboard_listtopten(
            self,
            userid
    ):
        """
        列出用户的公告列表
        列出用户当前有权限看到的10条公告,可用于在企业自定义工作首页进行公告轮播展示
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33463

        :param userid: 用户id
        """
        return self._top_request(
            "dingtalk.smartwork.blackboard.listtopten",
            {
                "userid": userid
            }
        )

    def dingtalk_corp_health_stepinfo_list(
            self,
            type,
            object_id,
            stat_dates
    ):
        """
        获取个人或部门钉钉运动步数
        查询企业用户或部门每天的钉钉运动步数,最多可以查询31天的数据
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=33538

        :param type: 0表示取用户步数,1表示取部门步数
        :param object_id: 可以传入用户userid或者部门id
        :param stat_dates: 时间列表,注意时间格式是YYYYMMDD
        """
        return self._top_request(
            "dingtalk.corp.health.stepinfo.list",
            {
                "type": type,
                "object_id": object_id,
                "stat_dates": stat_dates
            }
        )

    def dingtalk_isv_blazers_generatecode(
            self,
            biz_id,
            ext
    ):
        """
        isv客户接入钉钉
        约定的isv通过此接口提供其业务对象唯一标示及相关信息,钉钉返回一个引流页并提供一个token,token后续供钉钉用于识别该业务对象
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=34004

        :param biz_id: 业务对象唯一标示
        :param ext: 具体业务场景下约定的数据,格式:Map<String,String>
        """
        return self._top_request(
            "dingtalk.isv.blazers.generatecode",
            {
                "biz_id": biz_id,
                "ext": ext
            }
        )

    def dingtalk_corp_blazers_getbinddata(
            self
    ):
        """
        isv客户绑定数据
        获取绑定信息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=34005

        """
        return self._top_request(
            "dingtalk.corp.blazers.getbinddata"
        )

    def dingtalk_corp_blazers_getbizid(
            self
    ):
        """
        isv客户获取bizId
        获取bizId
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=34006

        """
        return self._top_request(
            "dingtalk.corp.blazers.getbizid"
        )

    def dingtalk_corp_health_stepinfo_listbyuserid(
            self,
            userids,
            stat_date
    ):
        """
        批量查询多个用户的钉钉运动步数
        根据用户列表和时间列表,批量查询钉钉运动步数
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=34390

        :param userids: 员工userid列表,最多传50个
        :param stat_date: 时间,注意时间格式是YYMMDD
        """
        return self._top_request(
            "dingtalk.corp.health.stepinfo.listbyuserid",
            {
                "userids": userids,
                "stat_date": stat_date
            }
        )

    def dingtalk_corp_health_stepinfo_getuserstatus(
            self,
            userid
    ):
        """
        查询用户是否开启了钉钉运动
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=34391

        :param userid: 用户id
        """
        return self._top_request(
            "dingtalk.corp.health.stepinfo.getuserstatus",
            {
                "userid": userid
            }
        )

    def dingtalk_corp_hrm_employee_delemployeedismissionandhandover(
            self,
            dismission_info_with_hand_over,
            op_userid
    ):
        """
        确认离职并指定交接人,会从通讯录删除
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=34825

        :param dismission_info_with_hand_over: 确认离职对象
        :param op_userid: 操作人userid
        """
        return self._top_request(
            "dingtalk.corp.hrm.employee.delemployeedismissionandhandover",
            {
                "dismission_info_with_hand_over": dismission_info_with_hand_over,
                "op_userid": op_userid
            }
        )

    def dingtalk_corp_hrm_employee_getdismissionlist(
            self,
            current,
            page_size,
            op_userid
    ):
        """
        获取离职人员信息
        智能人事开放接口-查询离职人员列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=34826

        :param current: 第几页,从1开始
        :param page_size: 一页多少数据,在1-100之间
        :param op_userid: 操作人userid
        """
        return self._top_request(
            "dingtalk.corp.hrm.employee.getdismissionlist",
            {
                "current": current,
                "page_size": page_size,
                "op_userid": op_userid
            }
        )

    def dingtalk_corp_dingindex_get(
            self,
            stat_dates
    ):
        """
        获取企业钉钉指数
        查询企业的日钉钉指数和月平均钉钉指数
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=34828

        :param stat_dates: 统计日期
        """
        return self._top_request(
            "dingtalk.corp.dingindex.get",
            {
                "stat_dates": stat_dates
            }
        )

    def dingtalk_corp_hrm_employee_modjobinfo(
            self,
            op_userid,
            hrm_api_job_model
    ):
        """
        更新员工工作信息
        钉钉智能人事开放接口-更新员工工作信息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=34829

        :param op_userid: 操作人userid,必须是拥有被操作人操作权限的管理员userid
        :param hrm_api_job_model: 员工信息对象,被操作人userid是必填,其他信息选填,填写则更新
        """
        return self._top_request(
            "dingtalk.corp.hrm.employee.modjobinfo",
            {
                "op_userid": op_userid,
                "hrm_api_job_model": hrm_api_job_model
            }
        )

    def dingtalk_corp_ding_receiverstatus_list(
            self,
            ding_id,
            page_size,
            page_no,
            confirmed_status=''
    ):
        """
        ding接收者状态列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=34893

        :param ding_id: dingid
        :param page_size: 每页显示数量,最大值50
        :param page_no: 分页页码,从1开始
        :param confirmed_status: 确认状态,三种情况:不传表示查所有;传0表示查未确认状态;传1表示查已经确认状态;
        """
        return self._top_request(
            "dingtalk.corp.ding.receiverstatus.list",
            {
                "ding_id": ding_id,
                "page_size": page_size,
                "page_no": page_no,
                "confirmed_status": confirmed_status
            }
        )

    def dingtalk_corp_hrm_employee_setuserworkdata(
            self,
            op_userid,
            hrm_api_user_data_model
    ):
        """
        更新用户绩效数据
        钉钉智能人事开放接口-更新员工绩效信息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=35667

        :param op_userid: 操作人userid,必须是拥有被操作人操作权限的管理员userid
        :param hrm_api_user_data_model: 员工信息对象,被操作人userid是必填
        """
        return self._top_request(
            "dingtalk.corp.hrm.employee.setuserworkdata",
            {
                "op_userid": op_userid,
                "hrm_api_user_data_model": hrm_api_user_data_model
            }
        )

    def dingtalk_smartwork_bpms_processinstance_updatevariables(
            self,
            process_instance_id,
            variables,
            remark=''
    ):
        """
        更新审批实例的表单值
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=35764

        :param process_instance_id: 审批实例id
        :param variables: 表单参数列表
        :param remark: 评论
        """
        return self._top_request(
            "dingtalk.smartwork.bpms.processinstance.updatevariables",
            {
                "process_instance_id": process_instance_id,
                "variables": variables,
                "remark": remark
            }
        )

    def dingtalk_smartwork_bpms_processinstance_getwithform(
            self,
            process_instance_id
    ):
        """
        获取审批实例的详情和表单信息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=35765

        :param process_instance_id: 审批实例id
        """
        return self._top_request(
            "dingtalk.smartwork.bpms.processinstance.getwithform",
            {
                "process_instance_id": process_instance_id
            }
        )

    def dingtalk_corp_ding_task_create(
            self,
            task_send_v_o
    ):
        """
        ding任务创建接口
        ding任务创建。不过会有一些限制,只能发送文本任务,不能设置抄送人,只能有一个任务执行人。
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=35778

        :param task_send_v_o: 任务对外接口
        """
        return self._top_request(
            "dingtalk.corp.ding.task.create",
            {
                "task_send_v_o": task_send_v_o
            }
        )

    def dingtalk_smartwork_bpms_process_getbybiztype(
            self,
            biz_type
    ):
        """
        根据审批套件标识获取审批模板
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=35826

        :param biz_type: 套件开发时与审批约定的业务标识
        """
        return self._top_request(
            "dingtalk.smartwork.bpms.process.getbybiztype",
            {
                "biz_type": biz_type
            }
        )

    def dingtalk_smartwork_bpms_process_getvisible(
            self,
            userid,
            process_code_list
    ):
        """
        检测用户是否有审批模板的可用权限
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=35827

        :param userid: 员工ID
        :param process_code_list: 流程模板唯一标识,可在oa后台编辑审批表单部分查询
        """
        return self._top_request(
            "dingtalk.smartwork.bpms.process.getvisible",
            {
                "userid": userid,
                "process_code_list": process_code_list
            }
        )

    def dingtalk_smartwork_bpms_processinstanceid_list(
            self,
            process_code,
            start_time,
            end_time='',
            cursor='',
            size='',
            userid_list=''
    ):
        """
        获取审批实例ID列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=35878

        :param process_code: 流程模板唯一标识,可在oa后台编辑审批表单部分查询
        :param start_time: 审批实例开始时间,毫秒级
        :param end_time: 审批实例结束时间,毫秒级,默认取当前值
        :param cursor: 分页查询的游标,最开始传0,后续传返回参数中的next_cursor值
        :param size: 分页参数,每页大小,最多传20
        :param userid_list: 发起人用户id列表
        """
        return self._top_request(
            "dingtalk.smartwork.bpms.processinstanceid.list",
            {
                "process_code": process_code,
                "start_time": start_time,
                "end_time": end_time,
                "cursor": cursor,
                "size": size,
                "userid_list": userid_list
            }
        )

    def dingtalk_corp_deptgroup_syncuser(
            self,
            userid='',
            dept_id=''
    ):
        """
        单个成员的部门群同步
        从部门成员同步到部门群
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=35919

        :param userid: 用户id
        :param dept_id: 部门id
        """
        return self._top_request(
            "dingtalk.corp.deptgroup.syncuser",
            {
                "userid": userid,
                "dept_id": dept_id
            }
        )

    def dingtalk_corp_liveness_get(
            self
    ):
        """
        获取企业活跃度
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36176

        """
        return self._top_request(
            "dingtalk.corp.liveness.get"
        )

    def dingtalk_corp_blazers_unbind(
            self
    ):
        """
        完全解绑
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36499

        """
        return self._top_request(
            "dingtalk.corp.blazers.unbind"
        )

    def dingtalk_corp_blazers_removemapping(
            self,
            biz_id=''
    ):
        """
        移除绑定关系
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36500

        :param biz_id: 商户唯一标识
        """
        return self._top_request(
            "dingtalk.corp.blazers.removemapping",
            {
                "biz_id": biz_id
            }
        )

    def dingtalk_corp_search_corpcontact_baseinfo(
            self,
            query,
            offset,
            size
    ):
        """
        搜索企业通讯录基本接口
        根据姓名和工号搜索企业员工
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36791

        :param query: 搜索词,长度大于2开始搜
        :param offset: 开始位置,从0开始
        :param size: 拉取个数上限100
        """
        return self._top_request(
            "dingtalk.corp.search.corpcontact.baseinfo",
            {
                "query": query,
                "offset": offset,
                "size": size
            }
        )

    def dingtalk_corp_smartdevice_getface(
            self,
            userid=''
    ):
        """
        获取用户授权底图照片
        获取指定企业员工的识别底图照片
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36860

        :param userid: 员工ID
        """
        return self._top_request(
            "dingtalk.corp.smartdevice.getface",
            {
                "userid": userid
            }
        )

    def dingtalk_oapi_process_listbyuserid(
            self,
            offset,
            size,
            userid=''
    ):
        """
        根据用户id获取可见审批模板列表
        根据userid分页获取用户可见的审批模板列表,每次最多获取100个模板。
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36861

        :param offset: 分页游标,从0开始。根据返回结果里的next_cursor是否为空来判断是否还有下一页,且再次调用时offset设置成next_cursor的值
        :param size: 分页大小,最大可设置成100
        :param userid: 用户id, 不传表示查询企业下所有审批模板
        """
        return self._top_request(
            "dingtalk.oapi.process.listbyuserid",
            {
                "offset": offset,
                "size": size,
                "userid": userid
            }
        )

    def dingtalk_oapi_report_template_listbyuserid(
            self,
            userid='',
            offset='0',
            size='100'
    ):
        """
        根据用户id获取可见的日志模板列表
        根据用户userId获取当前企业下可见的日志模板列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36909

        :param userid: 员工userId, 不传递表示获取所有日志模板
        :param offset: 分页游标,从0开始。根据返回结果里的next_cursor是否为空来判断是否还有下一页,且再次调用时offset设置成next_cursor的值
        :param size: 分页大小,最大可设置成100
        """
        return self._top_request(
            "dingtalk.oapi.report.template.listbyuserid",
            {
                "userid": userid,
                "offset": offset,
                "size": size
            }
        )

    def dingtalk_oapi_test_test(
            self,
            input=''
    ):
        """
        test
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36910

        :param input: 1
        """
        return self._top_request(
            "dingtalk.oapi.test.test",
            {
                "input": input
            }
        )

    def dingtalk_oapi_attendance_listschedule(
            self,
            work_date,
            offset='0',
            size='200'
    ):
        """
        考勤排班信息按天全量查询接口
        按天查询企业考勤排班全量信息,使用分页功能
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36979

        :param work_date: 排班时间,只取年月日部分
        :param offset: 偏移位置
        :param size: 分页大小,最大200
        """
        return self._top_request(
            "dingtalk.oapi.attendance.listschedule",
            {
                "workDate": work_date,
                "offset": offset,
                "size": size
            }
        )

    def dingtalk_oapi_role_list(
            self,
            size='20',
            offset='0'
    ):
        """
        获取企业角色列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36980

        :param size: 分页大小
        :param offset: 分页偏移
        """
        return self._top_request(
            "dingtalk.oapi.role.list",
            {
                "size": size,
                "offset": offset
            }
        )

    def dingtalk_oapi_extcontact_create(
            self,
            contact
    ):
        """
        添加企业外部联系人
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36981

        :param contact: 外部联系人信息
        """
        return self._top_request(
            "dingtalk.oapi.extcontact.create",
            {
                "contact": contact
            }
        )

    def dingtalk_oapi_role_simplelist(
            self,
            role_id,
            size='20',
            offset='0'
    ):
        """
        获取角色的员工列表
        获取企业中角色下的员工列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36982

        :param role_id: 角色ID
        :param size: 分页大小
        :param offset: 分页偏移
        """
        return self._top_request(
            "dingtalk.oapi.role.simplelist",
            {
                "role_id": role_id,
                "size": size,
                "offset": offset
            }
        )

    def dingtalk_oapi_attendance_getsimplegroups(
            self,
            offset='0',
            size='10'
    ):
        """
        获取考勤组列表详情
        获取公司自身的考勤组列表详情信息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36983

        :param offset: 偏移位置
        :param size: 分页大小,最大10
        """
        return self._top_request(
            "dingtalk.oapi.attendance.getsimplegroups",
            {
                "offset": offset,
                "size": size
            }
        )

    def dingtalk_oapi_attendance_getleaveapproveduration(
            self,
            userid,
            from_date,
            to_date
    ):
        """
        计算请假时长
        钉钉考勤微应用,提供了排班的功能,企业管理员可以设置排班规则,该接口可以自动根据排班规则统计出每个员工的请假时长,进而可以与企业自有的请假/财务系统对接,进行工资统计,如果您的企业使用了钉钉考勤并希望依赖考勤系统自动计算员工请假时长,可选择使用此接口
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36984

        :param userid: 员工在企业内的UserID,企业用来唯一标识用户的字段。
        :param from_date: 请假开始时间
        :param to_date: 请假结束时间
        """
        return self._top_request(
            "dingtalk.oapi.attendance.getleaveapproveduration",
            {
                "userid": userid,
                "from_date": from_date,
                "to_date": to_date
            }
        )

    def dingtalk_oapi_role_addrolesforemps(
            self,
            role_ids,
            user_ids
    ):
        """
        批量为员工增加角色信息
        企业在做企业员工管理的时候,需要对部分员工进行角色分类,该接口可以批量为员工增加角色信息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36985

        :param role_ids: 角色id list
        :param user_ids: 员工id list
        """
        return self._top_request(
            "dingtalk.oapi.role.addrolesforemps",
            {
                "roleIds": role_ids,
                "userIds": user_ids
            }
        )

    def dingtalk_oapi_extcontact_get(
            self,
            user_id
    ):
        """
        获取企业外部联系人详情
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36986

        :param user_id: userId
        """
        return self._top_request(
            "dingtalk.oapi.extcontact.get",
            {
                "user_id": user_id
            }
        )

    def dingtalk_oapi_attendance_getusergroup(
            self,
            userid
    ):
        """
        获取用户考勤组
        在钉钉考勤微应用中,考勤组是一类具有相同的班次、考勤位置等考勤规则的人或部门的组合,一个企业中的一个人只能属于一个考勤组。如果您的企业使用了钉钉考勤并希望获取员工的考勤组信息,可选择使用此接口
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36987

        :param userid: 员工在企业内的UserID,企业用来唯一标识用户的字段。
        """
        return self._top_request(
            "dingtalk.oapi.attendance.getusergroup",
            {
                "userid": userid
            }
        )

    def dingtalk_oapi_role_removerolesforemps(
            self,
            role_ids,
            user_ids
    ):
        """
        批量删除员工角的色信息
        企业在做企业员工管理的时候,需要对部分员工进行角色分类,该接口可以批量删除员工的角色信息。 角色在钉钉的组织结构里面就是标签的意思,你可以批量为一批用户添加一批角色信息(dingtalk.corp.role.addrolesforemps),那么调用该接口就可以批量删除已经存在的角色和员工对应关系,角色和员工是多对多的关系。参考代码如下: req.setRolelidList('1,2,3,4,5'); // 已经存在的角色id列表 req.setUseridList('a,b,c,d,e'); // 用户的id列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36991

        :param role_ids: 角色标签id
        :param user_ids: 用户userId
        """
        return self._top_request(
            "dingtalk.oapi.role.removerolesforemps",
            {
                "roleIds": role_ids,
                "userIds": user_ids
            }
        )

    def dingtalk_oapi_role_deleterole(
            self,
            role_id
    ):
        """
        删除角色信息
        企业在做企业内部组织结构角色管理的时候,如果需要删除该企业下某个角色信息,可以调用该接口。调用的前提是该角色下面的所有员工都已经被删除该角色
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36992

        :param role_id: 角色id
        """
        return self._top_request(
            "dingtalk.oapi.role.deleterole",
            {
                "role_id": role_id
            }
        )

    def dingtalk_oapi_role_getrolegroup(
            self,
            group_id
    ):
        """
        获取角色组信息
        该接口通过groupId参数可以获取该角色组详细信息以及下面所有关联的角色的信息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=36997

        :param group_id: 角色组的Id
        """
        return self._top_request(
            "dingtalk.oapi.role.getrolegroup",
            {
                "group_id": group_id
            }
        )

    def dingtalk_oapi_checkin_record_get(
            self,
            userid_list,
            start_time,
            end_time,
            cursor,
            size
    ):
        """
        获取多个用户的签到记录
        查询多个用户一段时间范围内的签到记录,只给企业调用,ISV无法调用。
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37000

        :param userid_list: 需要查询的用户列表
        :param start_time: 起始时间,单位毫秒
        :param end_time: 截止时间,单位毫秒。如果是取1个人的数据,时间范围最大到10天,如果是取多个人的数据,时间范围最大1天。
        :param cursor: 分页查询的游标,最开始可以传0
        :param size: 分页查询的每页大小,最大100
        """
        return self._top_request(
            "dingtalk.oapi.checkin.record.get",
            {
                "userid_list": userid_list,
                "start_time": start_time,
                "end_time": end_time,
                "cursor": cursor,
                "size": size
            }
        )

    def dingtalk_oapi_extcontact_update(
            self,
            contact
    ):
        """
        更新企业外部联系人
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37001

        :param contact: 外部联系人信息
        """
        return self._top_request(
            "dingtalk.oapi.extcontact.update",
            {
                "contact": contact
            }
        )

    def dingtalk_oapi_extcontact_delete(
            self,
            user_id
    ):
        """
        删除企业外部联系人
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37002

        :param user_id: userId
        """
        return self._top_request(
            "dingtalk.oapi.extcontact.delete",
            {
                "user_id": user_id
            }
        )

    def dingtalk_oapi_process_sync(
            self,
            agent_id,
            src_process_code,
            target_process_code,
            biz_category_id='',
            process_name=''
    ):
        """
        更新审批流
        ISV调用该接口,可以更新对应授权企业的审批单
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37003

        :param agent_id: 企业微应用标识
        :param src_process_code: 源审批流的唯一码
        :param target_process_code: 目标审批流的唯一码
        :param biz_category_id: 业务分类标识(建议采用JAVA包名的命名方式,如:com.alibaba)
        :param process_name: 审批流名称
        """
        return self._top_request(
            "dingtalk.oapi.process.sync",
            {
                "agent_id": agent_id,
                "src_process_code": src_process_code,
                "target_process_code": target_process_code,
                "biz_category_id": biz_category_id,
                "process_name": process_name
            }
        )

    def dingtalk_oapi_extcontact_list(
            self,
            size='20',
            offset='0'
    ):
        """
        获取企业外部联系人列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37004

        :param size: 分页大小, 最大100
        :param offset: 偏移位置
        """
        return self._top_request(
            "dingtalk.oapi.extcontact.list",
            {
                "size": size,
                "offset": offset
            }
        )

    def dingtalk_oapi_extcontact_listlabelgroups(
            self,
            size='20',
            offset='0'
    ):
        """
        获取企业外部联系人标签列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37005

        :param size: 分页大小,最大100
        :param offset: 偏移位置
        """
        return self._top_request(
            "dingtalk.oapi.extcontact.listlabelgroups",
            {
                "size": size,
                "offset": offset
            }
        )

    def dingtalk_oapi_processinstance_create(
            self,
            process_code,
            originator_user_id,
            dept_id,
            form_component_values,
            agent_id='',
            approvers='',
            cc_list='',
            cc_position='',
            approvers_v2=None
    ):
        """
        发起审批实例
        企业或isv调用该api,来发起一个审批实例
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37006

        :param process_code: 审批流的唯一码
        :param originator_user_id: 审批实例发起人的userid
        :param dept_id: 发起人所在的部门
        :param form_component_values: 审批流表单参数
        :param agent_id: 企业微应用标识
        :param approvers: 审批人userid列表
        :param cc_list: 抄送人userid列表
        :param cc_position: 抄送时间,分为(START,FINISH,START_FINISH)
        :param approvers_v2: 审批人列表,支持会签/或签,优先级高于approvers变量
        """
        return self._top_request(
            "dingtalk.oapi.processinstance.create",
            {
                "process_code": process_code,
                "originator_user_id": originator_user_id,
                "dept_id": dept_id,
                "form_component_values": form_component_values,
                "agent_id": agent_id,
                "approvers": approvers,
                "cc_list": cc_list,
                "cc_position": cc_position,
                "approvers_v2": approvers_v2
            }
        )

    def dingtalk_oapi_processinstance_list(
            self,
            process_code,
            start_time,
            end_time='',
            size='10',
            cursor='0',
            userid_list=''
    ):
        """
        获取审批实例列表
        企业可以根据审批流的唯一标识,分页获取该审批流对应的审批实例。只能取到权限范围内的相关部门的审批实例
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37007

        :param process_code: 流程模板唯一标识,可在oa后台编辑审批表单部分查询
        :param start_time: 审批实例开始时间,毫秒级
        :param end_time: 审批实例结束时间,毫秒级,默认取当前值
        :param size: 分页参数,每页大小,最多传10
        :param cursor: 分页查询的游标,最开始传0,后续传返回参数中的next_cursor值
        :param userid_list: 发起人用户id列表
        """
        return self._top_request(
            "dingtalk.oapi.processinstance.list",
            {
                "process_code": process_code,
                "start_time": start_time,
                "end_time": end_time,
                "size": size,
                "cursor": cursor,
                "userid_list": userid_list
            }
        )

    def dingtalk_oapi_processinstance_get(
            self,
            process_instance_id
    ):
        """
        获取单个审批实例详情
        根据审批实例id,获取审批实例详情,详情包括审批表单信息、操作记录列表、操作人、抄送人、审批任务列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37008

        :param process_instance_id: 审批实例id
        """
        return self._top_request(
            "dingtalk.oapi.processinstance.get",
            {
                "process_instance_id": process_instance_id
            }
        )

    def dingtalk_oapi_report_list(
            self,
            start_time,
            end_time,
            cursor,
            size,
            template_name='',
            userid=''
    ):
        """
        查询企业员工发出的日志列表
        企业可以根据员工userid或者日志模板名称,分页获取员工一段时间范围内在【日志】微应用发送的日志详细信息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37009

        :param start_time: 查询起始时间
        :param end_time: 查询截止时间
        :param cursor: 查询游标,初始传入0,后续从上一次的返回值中获取
        :param size: 每页数据量
        :param template_name: 要查询的模板名称
        :param userid: 员工的userid
        """
        return self._top_request(
            "dingtalk.oapi.report.list",
            {
                "start_time": start_time,
                "end_time": end_time,
                "cursor": cursor,
                "size": size,
                "template_name": template_name,
                "userid": userid
            }
        )

    def dingtalk_oapi_blackboard_listtopten(
            self,
            userid
    ):
        """
        列出用户的公告列表
        列出用户当前有权限看到的10条公告,可用于在企业自定义工作首页进行公告轮播展示
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37010

        :param userid: 用户id
        """
        return self._top_request(
            "dingtalk.oapi.blackboard.listtopten",
            {
                "userid": userid
            }
        )

    def dingtalk_oapi_health_stepinfo_list(
            self,
            type,
            object_id,
            stat_dates
    ):
        """
        获取个人或部门钉钉运动步数
        查询企业用户或部门每天的钉钉运动步数,最多可以查询31天的数据
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37011

        :param type: 0表示取用户步数,1表示取部门步数
        :param object_id: 可以传入用户userid或者部门id
        :param stat_dates: 时间列表,注意时间格式是YYYYMMDD
        """
        return self._top_request(
            "dingtalk.oapi.health.stepinfo.list",
            {
                "type": type,
                "object_id": object_id,
                "stat_dates": stat_dates
            }
        )

    def dingtalk_oapi_health_stepinfo_listbyuserid(
            self,
            userids,
            stat_date
    ):
        """
        批量查询多个用户的钉钉运动步数
        根据用户列表和时间列表,批量查询钉钉运动步数
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37012

        :param userids: 员工userid列表,最多传50个
        :param stat_date: 时间,注意时间格式是YYMMDD
        """
        return self._top_request(
            "dingtalk.oapi.health.stepinfo.listbyuserid",
            {
                "userids": userids,
                "stat_date": stat_date
            }
        )

    def dingtalk_oapi_health_stepinfo_getuserstatus(
            self,
            userid
    ):
        """
        查询用户是否开启了钉钉运动
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37013

        :param userid: 用户id
        """
        return self._top_request(
            "dingtalk.oapi.health.stepinfo.getuserstatus",
            {
                "userid": userid
            }
        )

    def dingtalk_oapi_process_copy(
            self,
            agent_id,
            process_code,
            biz_category_id='',
            process_name='',
            description='',
            copy_type='1'
    ):
        """
        复制审批流
        审批接口开放中的第一步,ISV调用此接口把它自身的审批流复制都授权企业中
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37014

        :param agent_id: 企业微应用标识
        :param process_code: 审批流的唯一码
        :param biz_category_id: 业务分类标识(建议采用JAVA包名的命名方式,)
        :param process_name: 审批流名称
        :param description: 审批流描述
        :param copy_type: 复制类型,1 不包含流程信息,2 包含流程信息且审批中员工可见。默认为1
        """
        return self._top_request(
            "dingtalk.oapi.process.copy",
            {
                "agent_id": agent_id,
                "process_code": process_code,
                "biz_category_id": biz_category_id,
                "process_name": process_name,
                "description": description,
                "copy_type": copy_type
            }
        )

    def dingtalk_oapi_message_corpconversation_asyncsendbycode(
            self,
            msgtype,
            agent_id,
            msgcontent,
            code,
            user_id_list='',
            dept_id_list='',
            to_all_user='false'
    ):
        """
        通过用户授权码异步向企业会话发送消息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37019

        :param msgtype: 消息类型,如text、file、oa等,具体见文档
        :param agent_id: 微应用的id
        :param msgcontent: 与msgtype对应的消息体,具体见文档
        :param code: 用户操作产生的授权码
        :param user_id_list: 接收者的用户userid列表
        :param dept_id_list: 接收者的部门id列表
        :param to_all_user: 是否发送给企业全部用户
        """
        return self._top_request(
            "dingtalk.oapi.message.corpconversation.asyncsendbycode",
            {
                "msgtype": msgtype,
                "agent_id": agent_id,
                "msgcontent": msgcontent,
                "code": code,
                "user_id_list": user_id_list,
                "dept_id_list": dept_id_list,
                "to_all_user": to_all_user
            }
        )

    def dingtalk_oapi_message_corpconversation_asyncsend(
            self,
            msgtype,
            agent_id,
            msgcontent,
            userid_list='',
            dept_id_list='',
            to_all_user='false'
    ):
        """
        企业会话消息异步发送
        企业会话消息异步发送接口
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37020

        :param msgtype: 消息类型,如text、file、oa等,具体见文档
        :param agent_id: 微应用的id
        :param msgcontent: 与msgtype对应的消息体,具体见文档
        :param userid_list: 接收者的用户userid列表
        :param dept_id_list: 接收者的部门id列表
        :param to_all_user: 是否发送给企业全部用户
        """
        return self._top_request(
            "dingtalk.oapi.message.corpconversation.asyncsend",
            {
                "msgtype": msgtype,
                "agent_id": agent_id,
                "msgcontent": msgcontent,
                "userid_list": userid_list,
                "dept_id_list": dept_id_list,
                "to_all_user": to_all_user
            }
        )

    def dingtalk_corp_hrm_employee_addresumerecord(
            self,
            userid='',
            title='',
            content='',
            k_v_content='',
            phone_url='',
            pc_url='',
            web_url='',
            record_time_stamp=''
    ):
        """
        新增成长记录
        企业员工的成长记录
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37022

        :param userid: 被操作人userid
        :param title: 成长记录title
        :param content: 成长记录第一条内容
        :param k_v_content: 厂长记录kv展示内容:json格式,顺序展示
        :param phone_url: 手机端url
        :param pc_url: pc端url
        :param web_url: webOA后台url
        :param record_time_stamp: 20180428 零点零分零秒
        """
        return self._top_request(
            "dingtalk.corp.hrm.employee.addresumerecord",
            {
                "userid": userid,
                "title": title,
                "content": content,
                "k_v_content": k_v_content,
                "phone_url": phone_url,
                "pc_url": pc_url,
                "web_url": web_url,
                "record_time_stamp": record_time_stamp
            }
        )

    def dingtalk_oapi_message_corpconversation_getsendprogress(
            self,
            agent_id,
            task_id
    ):
        """
        获取异步发送企业会话消息的发送进度
        获取异步发送企业会话消息的进度
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37023

        :param agent_id: 发送消息时使用的微应用的id
        :param task_id: 发送消息时钉钉返回的任务id
        """
        return self._top_request(
            "dingtalk.oapi.message.corpconversation.getsendprogress",
            {
                "agent_id": agent_id,
                "task_id": task_id
            }
        )

    def dingtalk_oapi_message_corpconversation_getsendresult(
            self,
            agent_id='',
            task_id=''
    ):
        """
        获取异步向企业会话发送消息的结果
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37024

        :param agent_id: 微应用的agentid
        :param task_id: 异步任务的id
        """
        return self._top_request(
            "dingtalk.oapi.message.corpconversation.getsendresult",
            {
                "agent_id": agent_id,
                "task_id": task_id
            }
        )

    def dingtalk_oapi_media_upload(
            self,
            media,
            type=''
    ):
        """
        上传媒体文件
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37051

        :param media: form-data中媒体文件标识,有filename、filelength、content-type等信息
        :param type: 媒体文件类型,分别有图片(image)、语音(voice)、普通文件(file)
        """
        return self._top_request(
            "dingtalk.oapi.media.upload",
            {
                "media": media,
                "type": type
            }
        )

    def dingtalk_oapi_user_getuserinfo(
            self,
            code=''
    ):
        """
        通过免登码获取用户userid
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37091

        :param code: requestAuthCode接口中获取的CODE
        """
        return self._top_request(
            "dingtalk.oapi.user.getuserinfo",
            {
                "code": code
            }
        )

    def dingtalk_oapi_attendance_list(
            self,
            work_date_from='',
            work_date_to='',
            user_id_list='',
            offset='',
            limit='',
            is_i18n=''
    ):
        """
        考勤打卡数据开放
        该接口仅限企业接入使用,用于返回企业内员工的实际打卡结果。比如,企业给一个员工设定的排班是上午9点和下午6点各打一次卡,即使员工在这期间打了多次,该接口也只会返回两条记录,包括上午的打卡结果和下午的打卡结果
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37092

        :param work_date_from: 查询考勤打卡记录的起始工作日
        :param work_date_to: 查询考勤打卡记录的结束工作日
        :param user_id_list: 员工在企业内的UserID列表,企业用来唯一标识用户的字段
        :param offset: 表示获取考勤数据的起始点,第一次传0,如果还有多余数据,下次获取传的offset值为之前的offset+limit
        :param limit: 表示获取考勤数据的条数,最大不能超过50条
        :param is_i18n: 是否国际化
        """
        return self._top_request(
            "dingtalk.oapi.attendance.list",
            {
                "workDateFrom": work_date_from,
                "workDateTo": work_date_to,
                "userIdList": user_id_list,
                "offset": offset,
                "limit": limit,
                "isI18n": is_i18n
            }
        )

    def dingtalk_oapi_attendance_listRecord(
            self,
            user_ids,
            check_date_from,
            check_date_to,
            is_i18n=''
    ):
        """
        考勤打卡记录开放
        该接口仅限企业接入使用,用于返回企业内员工的实际打卡记录。比如,企业给一个员工设定的排班是上午9点和下午6点各打一次卡,但是员工在这期间打了多次,该接口会把所有的打卡记录都返回。
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37094

        :param user_ids: 企业内的员工id列表,最多不能超过50个
        :param check_date_from: 查询考勤打卡记录的结束工作日。注意,起始与结束工作日最多相隔7天
        :param check_date_to: 查询考勤打卡记录的结束工作日。注意,起始与结束工作日最多相隔7天
        :param is_i18n: 是否国际化
        """
        return self._top_request(
            "dingtalk.oapi.attendance.listRecord",
            {
                "userIds": user_ids,
                "checkDateFrom": check_date_from,
                "checkDateTo": check_date_to,
                "isI18n": is_i18n
            }
        )

    def dingtalk_oapi_service_set_corp_ipwhitelist(
            self,
            auth_corpid='',
            ip_whitelist=''
    ):
        """
        ISV为授权方的企业单独设置IP白名单
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37095

        :param auth_corpid: 授权方corpid
        :param ip_whitelist: 要为其设置的IP白名单,格式支持IP段,用星号表示,如【5.6.*.*】,代表从【5.6.0.*】到【5.6.255.*】的任意IP,在第三段设为星号时,将忽略第四段的值,注意:仅支持后两段设置为星号
        """
        return self._top_request(
            "dingtalk.oapi.service.set_corp_ipwhitelist",
            {
                "auth_corpid": auth_corpid,
                "ip_whitelist": ip_whitelist
            }
        )

    def dingtalk_oapi_service_reauth_corp(
            self,
            app_id='',
            corpid_list=''
    ):
        """
        重新授权未激活应用的企业
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37096

        :param app_id: 套件下的微应用ID
        :param corpid_list: 未激活的corpid列表
        """
        return self._top_request(
            "dingtalk.oapi.service.reauth_corp",
            {
                "app_id": app_id,
                "corpid_list": corpid_list
            }
        )

    def dingtalk_oapi_chat_send(
            self,
            chatid='',
            action_card=None,
            oa=None,
            voice=None,
            file=None,
            image=None,
            link=None,
            text=None,
            msgtype='',
            markdown=None,
            msg=None
    ):
        """
        发送群消息
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37099

        :param chatid: 群会话id
        :param action_card: actionCard消息
        :param oa: OA消息
        :param voice: 语音消息
        :param file: 文件消息
        :param image: 图片消息
        :param link: 链接消息
        :param text: 文本消息
        :param msgtype: 消息类型
        :param markdown: markdown消息
        :param msg: 消息格式
        """
        return self._top_request(
            "dingtalk.oapi.chat.send",
            {
                "chatid": chatid,
                "action_card": action_card,
                "oa": oa,
                "voice": voice,
                "file": file,
                "image": image,
                "link": link,
                "text": text,
                "msgtype": msgtype,
                "markdown": markdown,
                "msg": msg
            }
        )

    def dingtalk_oapi_chat_getReadList(
            self,
            message_id='',
            cursor='',
            size=''
    ):
        """
        查询群消息已读人员列表
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37100

        :param message_id: 发送群消息接口返回的加密消息id
        :param cursor: 分页查询的游标,第一次可以传0,后续传返回结果中的next_cursor的值。当返回结果中,没有next_cursor时,表示没有后续的数据了,可以结束调用
        :param size: 分页查询的大小,最大可以传100
        """
        return self._top_request(
            "dingtalk.oapi.chat.getReadList",
            {
                "messageId": message_id,
                "cursor": cursor,
                "size": size
            }
        )

    def dingtalk_oapi_chat_update(
            self,
            chatid='',
            name='',
            owner='',
            owner_type='',
            add_useridlist='',
            del_useridlist='',
            add_extidlist='',
            del_extidlist='',
            icon='',
            is_ban='',
            searchable='',
            validation_type='',
            mention_all_authority='',
            management_type='',
            chat_banned_type='',
            show_history_type=''
    ):
        """
        修改群会话
        文档地址:https://open-doc.dingtalk.com/docs/api.htm?apiId=37102

        :param chatid: 群会话id
        :param name: 群名称
        :param owner: 群主的userId
        :param owner_type: 群主类型,emp:企业员工,ext:外部联系人
        :param add_useridlist: 添加成员列表
        :param del_useridlist: 删除成员列表
        :param add_extidlist: 添加外部联系人成员列表
        :param del_extidlist: 删除外部联系人成员列表
        :param icon: 群头像mediaId
        :param is_ban: 是否禁言
        :param searchable: 群可搜索,0-默认,不可搜索,1-可搜索
        :param validation_type: 入群验证,0:不入群验证(默认) 1:入群验证
        :param mention_all_authority: @all 权限,0-默认,所有人,1-仅群主可@all
        :param management_type: 管理类型,0-默认,所有人可管理,1-仅群主可管理
        :param chat_banned_type: 群禁言,0-默认,不禁言,1-全员禁言
        :param show_history_type: 新成员可查看聊天历史 0否 1是
        """
        return self._top_request(
            "dingtalk.oapi.chat.update",
            {
                "chatid": chatid,
                "name": name,
                "owner": owner,
                "ownerType": owner_type,
                "add_useridlist": add_useridlist,
                "del_useridlist": del
Download .txt
gitextract_5_1r8j_z/

├── .bumpversion.cfg
├── .gitignore
├── .readthedocs.yml
├── .travis.yml
├── LICENSE
├── MANIFEST.in
├── README.rst
├── dev-requirements.txt
├── dingtalk/
│   ├── __init__.py
│   ├── client/
│   │   ├── __init__.py
│   │   ├── api/
│   │   │   ├── __init__.py
│   │   │   ├── attendance.py
│   │   │   ├── base.py
│   │   │   ├── blackboard.py
│   │   │   ├── bpms.py
│   │   │   ├── calendar.py
│   │   │   ├── callback.py
│   │   │   ├── chat.py
│   │   │   ├── checkin.py
│   │   │   ├── cspace.py
│   │   │   ├── department.py
│   │   │   ├── employeerm.py
│   │   │   ├── ext.py
│   │   │   ├── extcontact.py
│   │   │   ├── health.py
│   │   │   ├── message.py
│   │   │   ├── microapp.py
│   │   │   ├── report.py
│   │   │   ├── role.py
│   │   │   ├── taobao.py
│   │   │   ├── user.py
│   │   │   └── workrecord.py
│   │   ├── base.py
│   │   ├── channel.py
│   │   └── isv.py
│   ├── core/
│   │   ├── __init__.py
│   │   ├── constants.py
│   │   ├── exceptions.py
│   │   └── utils.py
│   ├── crypto/
│   │   ├── __init__.py
│   │   ├── base.py
│   │   ├── cryptography.py
│   │   ├── pkcs7.py
│   │   └── pycrypto.py
│   ├── model/
│   │   ├── __init__.py
│   │   ├── field.py
│   │   └── message.py
│   └── storage/
│       ├── __init__.py
│       ├── cache.py
│       ├── kvstorage.py
│       └── memorystorage.py
├── docs/
│   ├── Makefile
│   ├── changelog.rst
│   ├── client/
│   │   ├── api/
│   │   │   ├── attendance.rst
│   │   │   ├── blackboard.rst
│   │   │   ├── bpms.rst
│   │   │   ├── calendar.rst
│   │   │   ├── callback.rst
│   │   │   ├── chat.rst
│   │   │   ├── checkin.rst
│   │   │   ├── cspace.rst
│   │   │   ├── department.rst
│   │   │   ├── employeerm.rst
│   │   │   ├── ext.rst
│   │   │   ├── extcontact.rst
│   │   │   ├── health.rst
│   │   │   ├── message.rst
│   │   │   ├── microapp.rst
│   │   │   ├── report.rst
│   │   │   ├── role.rst
│   │   │   ├── taobao.rst
│   │   │   ├── user.rst
│   │   │   └── workrecord.rst
│   │   ├── index.rst
│   │   └── isv.rst
│   ├── conf.py
│   ├── index.rst
│   ├── install.rst
│   └── model/
│       ├── field.rst
│       └── message.rst
├── pytest.ini
├── requirements.txt
├── setup.cfg
├── setup.py
├── tests/
│   ├── test_crypto.py
│   ├── test_message.py
│   ├── test_storage.py
│   └── test_utils.py
└── tox.ini
Download .txt
Showing preview only (485K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4864 symbols across 45 files)

FILE: dingtalk/__init__.py
  class NullHandler (line 16) | class NullHandler(logging.Handler):
    method emit (line 17) | def emit(self, record):

FILE: dingtalk/client/__init__.py
  class DingTalkClient (line 18) | class DingTalkClient(BaseClient, TaobaoMixin):
    method __init__ (line 40) | def __init__(self, corp_id, prefix='client', storage=None, timeout=Non...
    method get_access_token_key (line 45) | def get_access_token_key(self):
    method access_token (line 49) | def access_token(self):
    method jsapi_ticket (line 59) | def jsapi_ticket(self):
    method get_jsapi_params (line 68) | def get_jsapi_params(self, url, noncestr=None, timestamp=None):
    method _handle_pre_request (line 90) | def _handle_pre_request(self, method, uri, kwargs):
    method _handle_pre_top_request (line 96) | def _handle_pre_top_request(self, params, uri):
    method _handle_request_except (line 103) | def _handle_request_except(self, e, func, *args, **kwargs):
    method get_jsapi_ticket (line 110) | def get_jsapi_ticket(self):
    method get_access_token (line 113) | def get_access_token(self):
  class SecretClient (line 117) | class SecretClient(DingTalkClient):
    method __init__ (line 119) | def __init__(self, corp_id, corp_secret, token=None, aes_key=None, sto...
    method get_access_token (line 124) | def get_access_token(self):
  class AppKeyClient (line 132) | class AppKeyClient(DingTalkClient):
    method __init__ (line 134) | def __init__(self, corp_id, app_key, app_secret, token=None, aes_key=N...
    method get_access_token_key (line 141) | def get_access_token_key(self):
    method get_access_token (line 144) | def get_access_token(self):

FILE: dingtalk/client/api/attendance.py
  class Attendance (line 10) | class Attendance(DingTalkBaseAPI):
    method list_record (line 14) | def list_record(self, user_ids, check_date_from, check_date_to):
    method list (line 38) | def list(self, work_date_from, work_date_to, user_ids=(), offset=0, li...
    method listschedule (line 65) | def listschedule(self, work_date, offset=0, size=200):
    method getsimplegroups (line 85) | def getsimplegroups(self, offset=0, size=10):
    method getleaveapproveduration (line 101) | def getleaveapproveduration(self, userid, from_date, to_date):
    method getleavestatus (line 125) | def getleavestatus(self, userid_list, start_time, end_time, offset=0, ...
    method getusergroup (line 151) | def getusergroup(self, userid):

FILE: dingtalk/client/api/base.py
  class DingTalkBaseAPI (line 5) | class DingTalkBaseAPI(object):
    method __init__ (line 9) | def __init__(self, client=None):
    method _get (line 12) | def _get(self, url, params=None, **kwargs):
    method _post (line 17) | def _post(self, url, data=None, params=None, **kwargs):
    method _top_request (line 22) | def _top_request(self, method, params=None, format_='json', v='2.0',
    method corp_id (line 29) | def corp_id(self):

FILE: dingtalk/client/api/blackboard.py
  class BlackBoard (line 7) | class BlackBoard(DingTalkBaseAPI):
    method listtopten (line 9) | def listtopten(self, userid):

FILE: dingtalk/client/api/bpms.py
  class Bpms (line 13) | class Bpms(DingTalkBaseAPI):
    method process_copy (line 15) | def process_copy(self, agent_id, process_code, biz_category_id=None, p...
    method process_sync (line 38) | def process_sync(self, agent_id, src_process_code, target_process_code...
    method processinstance_create (line 61) | def processinstance_create(
    method processinstance_listids (line 115) | def processinstance_listids(self, process_code, start_time, end_time, ...
    method processinstance_list (line 145) | def processinstance_list(self, process_code, start_time, end_time=None...
    method processinstance_get (line 180) | def processinstance_get(self, process_instance_id):
    method dingtalk_oapi_process_gettodonum (line 193) | def dingtalk_oapi_process_gettodonum(self, userid):
    method process_listbyuserid (line 205) | def process_listbyuserid(self, userid, offset=0, size=100):
    method process_instance_terminate (line 223) | def process_instance_terminate(self, process_instance_id,  remark="", ...

FILE: dingtalk/client/api/calendar.py
  class Calendar (line 8) | class Calendar(DingTalkBaseAPI):
    method create (line 10) | def create(self, create_vo):
    method list (line 21) | def list(
    method delete (line 58) | def delete(self, userid='', calendar_id=''):

FILE: dingtalk/client/api/callback.py
  class Callback (line 7) | class Callback(DingTalkBaseAPI):
    method register_call_back (line 22) | def register_call_back(self, call_back_tags, token, aes_key, url):
    method get_call_back (line 46) | def get_call_back(self):
    method update_call_back (line 54) | def update_call_back(self, call_back_tags, token, aes_key, url):
    method delete_call_back (line 78) | def delete_call_back(self):
    method get_call_back_failed_result (line 86) | def get_call_back_failed_result(self):

FILE: dingtalk/client/api/chat.py
  class Chat (line 8) | class Chat(DingTalkBaseAPI):
    method create (line 10) | def create(self, name, owner, useridlist, show_history_type=False, sea...
    method update (line 42) | def update(self, chatid, name=None, owner=None, add_useridlist=(), del...
    method get (line 79) | def get(self, chatid):
    method send (line 92) | def send(self, chatid, msg_body):
    method get_read_list (line 109) | def get_read_list(self, message_id, cursor=0, size=100):

FILE: dingtalk/client/api/checkin.py
  class Checkin (line 13) | class Checkin(DingTalkBaseAPI):
    method record (line 15) | def record(self, department_id, start_time, end_time, offset=0, size=1...
    method record_get (line 48) | def record_get(self, userid_list, start_time, end_time, offset=0, size...

FILE: dingtalk/client/api/cspace.py
  class Cspace (line 10) | class Cspace(DingTalkBaseAPI):
    method add_to_single_chat (line 12) | def add_to_single_chat(self, agent_id, userid, media_id, file_name):
    method add (line 32) | def add(self, code, media_id, space_id, folder_id, name, agent_id=None...
    method get_custom_space (line 61) | def get_custom_space(self, domain=None, agent_id=None):
    method grant_custom_space (line 78) | def grant_custom_space(self, isdownload, userid, agent_id=None, domain...
    method file_upload_transaction (line 107) | def file_upload_transaction(self, agent_id, file_size, chunk_numbers, ...
    method file_upload_chunk (line 128) | def file_upload_chunk(self, agent_id, upload_id, chunk_sequence, file_...
    method file_upload_single (line 150) | def file_upload_single(self, agent_id, file_size, media_file):

FILE: dingtalk/client/api/department.py
  class Department (line 7) | class Department(DingTalkBaseAPI):
    method list_ids (line 9) | def list_ids(self, _id=1):
    method list (line 22) | def list(self, _id=1, lang='zh_CN', fetch_child=False):
    method get (line 37) | def get(self, _id, lang='zh_CN'):
    method create (line 50) | def create(self, department_data):
    method update (line 65) | def update(self, department_data):
    method delete (line 80) | def delete(self, _id):
    method list_parent_depts_by_dept (line 92) | def list_parent_depts_by_dept(self, _id):
    method list_parent_depts (line 105) | def list_parent_depts(self, user_id):

FILE: dingtalk/client/api/employeerm.py
  class Employeerm (line 13) | class Employeerm(DingTalkBaseAPI):
    method get (line 17) | def get(self, userid):
    method list (line 30) | def list(self, userid_list, field_filter_list=()):
    method querypreentry (line 50) | def querypreentry(self, offset=0, size=50):
    method queryonjob (line 66) | def queryonjob(self, status_list=(), offset=0, size=50):
    method querydimission (line 86) | def querydimission(self, offset=0, size=50):
    method listdimission (line 102) | def listdimission(self, userid_list=()):
    method addpreentry (line 118) | def addpreentry(self, name, mobile, pre_entry_time=None, op_userid=Non...
    method getdismissionlist (line 147) | def getdismissionlist(self, op_userid, current=1, page_size=100):
    method setuserworkdata (line 162) | def setuserworkdata(self, op_userid, userid, data_value, data_desc=None):
    method modjobinfo (line 178) | def modjobinfo(self, op_userid, userid, employee_type=None, employee_s...

FILE: dingtalk/client/api/ext.py
  class Ext (line 10) | class Ext(DingTalkBaseAPI):
    method listlabelgroups (line 12) | def listlabelgroups(self, offset=0, size=100):
    method list (line 26) | def list(self, offset=0, size=100):
    method add (line 40) | def add(self, name, follower_userid, label_ids, mobile, state_code='86',

FILE: dingtalk/client/api/extcontact.py
  class ExtContact (line 7) | class ExtContact(DingTalkBaseAPI):
    method listlabelgroups (line 9) | def listlabelgroups(self, offset=0, size=100):
    method list (line 21) | def list(self, offset=0, size=100):
    method get (line 33) | def get(self, user_id):
    method create (line 44) | def create(self, name, follower_user_id, label_ids, mobile, state_code...
    method update (line 88) | def update(self, user_id, name, follower_user_id, label_ids, mobile, s...
    method delete (line 133) | def delete(self, user_id):

FILE: dingtalk/client/api/health.py
  class Health (line 10) | class Health(DingTalkBaseAPI):
    method stepinfo_getuserstatus (line 12) | def stepinfo_getuserstatus(self, userid):
    method stepinfo_list (line 24) | def stepinfo_list(self, _type, object_id, stat_dates):
    method stepinfo_listbyuserid (line 45) | def stepinfo_listbyuserid(self, userids, stat_date):

FILE: dingtalk/client/api/message.py
  class Message (line 15) | class Message(DingTalkBaseAPI):
    method get_pc_url (line 18) | def get_pc_url(url, pc_slide=True):
    method media_upload (line 31) | def media_upload(self, media_type, media_file):
    method media_download_file (line 45) | def media_download_file(self, media_id):
    method send_to_conversation (line 57) | def send_to_conversation(self, sender, cid, msg_body):
    method send (line 72) | def send(self, agentid, msg_body, touser_list=(), toparty_list=()):
    method list_message_status (line 92) | def list_message_status(self, message_id):
    method send_by_code (line 101) | def send_by_code(self, code, msg_body):
    method asyncsend (line 114) | def asyncsend(self, msg_body, agent_id, userid_list=(), dept_id_list=(...
    method asyncsend_v2 (line 145) | def asyncsend_v2(self, msg_body, agent_id, userid_list=(), dept_id_lis...
    method recall (line 178) | def recall(self, agent_id, msg_task_id):
    method getsendprogress (line 190) | def getsendprogress(self, agent_id, task_id):
    method getsendresult (line 204) | def getsendresult(self, agent_id=None, task_id=None):
    method asyncsendbycode (line 218) | def asyncsendbycode(self, code, msg_body, agent_id, userid_list=(), de...

FILE: dingtalk/client/api/microapp.py
  class MicroApp (line 7) | class MicroApp(DingTalkBaseAPI):
    method create (line 9) | def create(self, app_icon, app_name, app_desc, homepage_url, pc_homepa...
    method update (line 34) | def update(self, agent_id, app_icon=None, app_name=None, app_desc=None,
    method delete (line 62) | def delete(self, agent_id):
    method list (line 74) | def list(self):
    method list_by_userid (line 85) | def list_by_userid(self, userid):
    method visible_scopes (line 97) | def visible_scopes(self, agent_id):
    method set_visible_scopes (line 109) | def set_visible_scopes(self, agent_id, is_hidden=False, dept_visible_s...

FILE: dingtalk/client/api/report.py
  class Report (line 10) | class Report(DingTalkBaseAPI):
    method list (line 12) | def list(self, start_time, end_time, cursor=0, size=20, template_name=...
    method statistics (line 39) | def statistics(self, report_id):
    method statistics_listbytype (line 52) | def statistics_listbytype(self, report_id, _type, offset=0, size=100):
    method receiver_list (line 71) | def receiver_list(self, report_id, offset=0, size=100):
    method comment_list (line 88) | def comment_list(self, report_id, offset=0, size=20):
    method getunreadcount (line 105) | def getunreadcount(self, userid=''):
    method template_listbyuserid (line 117) | def template_listbyuserid(self, userid='', offset=0, size=100):

FILE: dingtalk/client/api/role.py
  class Role (line 9) | class Role(DingTalkBaseAPI):
    method simplelist (line 11) | def simplelist(self, role_id, offset=0, size=20):
    method list (line 25) | def list(self, offset=0, size=20):
    method addrolesforemps (line 38) | def addrolesforemps(self, rolelid_list, userid_list):
    method removerolesforemps (line 55) | def removerolesforemps(self, rolelid_list, userid_list):
    method deleterole (line 72) | def deleterole(self, role_id):
    method getrolegroup (line 84) | def getrolegroup(self, group_id):
    method getrole (line 97) | def getrole(self, role_id):
    method add_role (line 110) | def add_role(self, role_name, group_id):
    method update_role (line 125) | def update_role(self, role_name, group_id):
    method add_role_group (line 140) | def add_role_group(self, name):

FILE: dingtalk/client/api/taobao.py
  class TbDingDing (line 7) | class TbDingDing(DingTalkBaseAPI):
    method dingtalk_corp_message_corpconversation_sendmock (line 12) | def dingtalk_corp_message_corpconversation_sendmock(
    method dingtalk_corp_emp_search (line 42) | def dingtalk_corp_emp_search(
    method dingtalk_corp_ext_add (line 66) | def dingtalk_corp_ext_add(
    method dingtalk_corp_ext_list (line 85) | def dingtalk_corp_ext_list(
    method dingtalk_corp_ext_listlabelgroups (line 105) | def dingtalk_corp_ext_listlabelgroups(
    method dingtalk_corp_encryption_key_list (line 126) | def dingtalk_corp_encryption_key_list(
    method dingtalk_corp_conference_details_query (line 139) | def dingtalk_corp_conference_details_query(
    method dingtalk_corp_ext_update (line 166) | def dingtalk_corp_ext_update(
    method dingtalk_corp_conversation_corpconversion_listmember (line 183) | def dingtalk_corp_conversation_corpconversion_listmember(
    method dingtalk_corp_conversation_corpconversion_getconversation (line 206) | def dingtalk_corp_conversation_corpconversion_getconversation(
    method dingtalk_corp_message_corpconversation_asyncsend (line 224) | def dingtalk_corp_message_corpconversation_asyncsend(
    method dingtalk_corp_message_corpconversation_getsendprogress (line 257) | def dingtalk_corp_message_corpconversation_getsendprogress(
    method dingtalk_corp_message_corpconversation_getsendresult (line 278) | def dingtalk_corp_message_corpconversation_getsendresult(
    method dingtalk_corp_message_corpconversation_asyncsendbycode (line 298) | def dingtalk_corp_message_corpconversation_asyncsendbycode(
    method dingtalk_corp_chatbot_createorgbot (line 333) | def dingtalk_corp_chatbot_createorgbot(
    method dingtalk_isv_call_getuserlist (line 351) | def dingtalk_isv_call_getuserlist(
    method dingtalk_isv_call_calluser (line 372) | def dingtalk_isv_call_calluser(
    method dingtalk_isv_call_setuserlist (line 395) | def dingtalk_isv_call_setuserlist(
    method dingtalk_isv_call_removeuserlist (line 412) | def dingtalk_isv_call_removeuserlist(
    method dingtalk_corp_chatbot_updateorgbot (line 429) | def dingtalk_corp_chatbot_updateorgbot(
    method dingtalk_corp_chatbot_listorgbot (line 453) | def dingtalk_corp_chatbot_listorgbot(
    method dingtalk_corp_chatbot_listorgbotbytypeandbottype (line 474) | def dingtalk_corp_chatbot_listorgbotbytypeandbottype(
    method dingtalk_smartwork_attends_listschedule (line 495) | def dingtalk_smartwork_attends_listschedule(
    method dingtalk_smartwork_attends_getsimplegroups (line 519) | def dingtalk_smartwork_attends_getsimplegroups(
    method dingtalk_corp_role_simplelist (line 540) | def dingtalk_corp_role_simplelist(
    method dingtalk_corp_role_list (line 564) | def dingtalk_corp_role_list(
    method dingtalk_smartwork_bpms_processinstance_create (line 584) | def dingtalk_smartwork_bpms_processinstance_create(
    method dingtalk_smartwork_checkin_record_get (line 623) | def dingtalk_smartwork_checkin_record_get(
    method dingtalk_smartwork_bpms_process_sync (line 653) | def dingtalk_smartwork_bpms_process_sync(
    method dingtalk_smartwork_bpms_processinstance_list (line 683) | def dingtalk_smartwork_bpms_processinstance_list(
    method dingtalk_corp_role_deleterole (line 716) | def dingtalk_corp_role_deleterole(
    method dingtalk_corp_role_getrolegroup (line 734) | def dingtalk_corp_role_getrolegroup(
    method dingtalk_corp_role_addrolesforemps (line 752) | def dingtalk_corp_role_addrolesforemps(
    method dingtalk_corp_role_removerolesforemps (line 773) | def dingtalk_corp_role_removerolesforemps(
    method dingtalk_corp_invoice_gettitle (line 794) | def dingtalk_corp_invoice_gettitle(
    method dingtalk_corp_device_manage_get (line 808) | def dingtalk_corp_device_manage_get(
    method dingtalk_corp_device_manage_querylist (line 829) | def dingtalk_corp_device_manage_querylist(
    method dingtalk_corp_device_nick_update (line 853) | def dingtalk_corp_device_nick_update(
    method dingtalk_corp_device_manage_unbind (line 877) | def dingtalk_corp_device_manage_unbind(
    method dingtalk_corp_user_personainfo_get (line 898) | def dingtalk_corp_user_personainfo_get(
    method dingtalk_corp_report_list (line 916) | def dingtalk_corp_report_list(
    method dingtalk_corp_chatbot_addchatbotinstance (line 949) | def dingtalk_corp_chatbot_addchatbotinstance(
    method dingtalk_smartwork_attends_getleaveapproveduration (line 976) | def dingtalk_smartwork_attends_getleaveapproveduration(
    method dingtalk_smartwork_attends_getusergroup (line 1000) | def dingtalk_smartwork_attends_getusergroup(
    method dingtalk_corp_calendar_create (line 1018) | def dingtalk_corp_calendar_create(
    method dingtalk_corp_ding_create (line 1037) | def dingtalk_corp_ding_create(
    method dingtalk_smartwork_bpms_processinstance_get (line 1071) | def dingtalk_smartwork_bpms_processinstance_get(
    method dingtalk_corp_chatbot_install (line 1089) | def dingtalk_corp_chatbot_install(
    method dingtalk_corp_chatbot_updatebychatbotid (line 1107) | def dingtalk_corp_chatbot_updatebychatbotid(
    method dingtalk_corp_chatbot_listbychatbotids (line 1142) | def dingtalk_corp_chatbot_listbychatbotids(
    method dingtalk_corp_extcontact_create (line 1160) | def dingtalk_corp_extcontact_create(
    method dingtalk_corp_smartdevice_hasface (line 1178) | def dingtalk_corp_smartdevice_hasface(
    method dingtalk_corp_extcontact_list (line 1196) | def dingtalk_corp_extcontact_list(
    method dingtalk_corp_extcontact_update (line 1217) | def dingtalk_corp_extcontact_update(
    method dingtalk_corp_extcontact_get (line 1235) | def dingtalk_corp_extcontact_get(
    method dingtalk_corp_extcontact_delete (line 1253) | def dingtalk_corp_extcontact_delete(
    method dingtalk_corp_extcontact_listlabelgroups (line 1271) | def dingtalk_corp_extcontact_listlabelgroups(
    method dingtalk_corp_device_manage_hasbinddevice (line 1292) | def dingtalk_corp_device_manage_hasbinddevice(
    method dingtalk_corp_smartdevice_addface (line 1310) | def dingtalk_corp_smartdevice_addface(
    method dingtalk_corp_smartdevice_addrecognizenotify (line 1328) | def dingtalk_corp_smartdevice_addrecognizenotify(
    method dingtalk_corp_smartdevice_receptionist_pushinfo (line 1346) | def dingtalk_corp_smartdevice_receptionist_pushinfo(
    method dingtalk_corp_hrm_employee_get (line 1370) | def dingtalk_corp_hrm_employee_get(
    method dingtalk_smartwork_blackboard_listtopten (line 1388) | def dingtalk_smartwork_blackboard_listtopten(
    method dingtalk_corp_health_stepinfo_list (line 1406) | def dingtalk_corp_health_stepinfo_list(
    method dingtalk_isv_blazers_generatecode (line 1430) | def dingtalk_isv_blazers_generatecode(
    method dingtalk_corp_blazers_getbinddata (line 1451) | def dingtalk_corp_blazers_getbinddata(
    method dingtalk_corp_blazers_getbizid (line 1464) | def dingtalk_corp_blazers_getbizid(
    method dingtalk_corp_health_stepinfo_listbyuserid (line 1477) | def dingtalk_corp_health_stepinfo_listbyuserid(
    method dingtalk_corp_health_stepinfo_getuserstatus (line 1498) | def dingtalk_corp_health_stepinfo_getuserstatus(
    method dingtalk_corp_hrm_employee_delemployeedismissionandhandover (line 1515) | def dingtalk_corp_hrm_employee_delemployeedismissionandhandover(
    method dingtalk_corp_hrm_employee_getdismissionlist (line 1535) | def dingtalk_corp_hrm_employee_getdismissionlist(
    method dingtalk_corp_dingindex_get (line 1559) | def dingtalk_corp_dingindex_get(
    method dingtalk_corp_hrm_employee_modjobinfo (line 1577) | def dingtalk_corp_hrm_employee_modjobinfo(
    method dingtalk_corp_ding_receiverstatus_list (line 1598) | def dingtalk_corp_ding_receiverstatus_list(
    method dingtalk_corp_hrm_employee_setuserworkdata (line 1624) | def dingtalk_corp_hrm_employee_setuserworkdata(
    method dingtalk_smartwork_bpms_processinstance_updatevariables (line 1645) | def dingtalk_smartwork_bpms_processinstance_updatevariables(
    method dingtalk_smartwork_bpms_processinstance_getwithform (line 1668) | def dingtalk_smartwork_bpms_processinstance_getwithform(
    method dingtalk_corp_ding_task_create (line 1685) | def dingtalk_corp_ding_task_create(
    method dingtalk_smartwork_bpms_process_getbybiztype (line 1703) | def dingtalk_smartwork_bpms_process_getbybiztype(
    method dingtalk_smartwork_bpms_process_getvisible (line 1720) | def dingtalk_smartwork_bpms_process_getvisible(
    method dingtalk_smartwork_bpms_processinstanceid_list (line 1740) | def dingtalk_smartwork_bpms_processinstanceid_list(
    method dingtalk_corp_deptgroup_syncuser (line 1772) | def dingtalk_corp_deptgroup_syncuser(
    method dingtalk_corp_liveness_get (line 1793) | def dingtalk_corp_liveness_get(
    method dingtalk_corp_blazers_unbind (line 1805) | def dingtalk_corp_blazers_unbind(
    method dingtalk_corp_blazers_removemapping (line 1817) | def dingtalk_corp_blazers_removemapping(
    method dingtalk_corp_search_corpcontact_baseinfo (line 1834) | def dingtalk_corp_search_corpcontact_baseinfo(
    method dingtalk_corp_smartdevice_getface (line 1858) | def dingtalk_corp_smartdevice_getface(
    method dingtalk_oapi_process_listbyuserid (line 1876) | def dingtalk_oapi_process_listbyuserid(
    method dingtalk_oapi_report_template_listbyuserid (line 1900) | def dingtalk_oapi_report_template_listbyuserid(
    method dingtalk_oapi_test_test (line 1924) | def dingtalk_oapi_test_test(
    method dingtalk_oapi_attendance_listschedule (line 1941) | def dingtalk_oapi_attendance_listschedule(
    method dingtalk_oapi_role_list (line 1965) | def dingtalk_oapi_role_list(
    method dingtalk_oapi_extcontact_create (line 1985) | def dingtalk_oapi_extcontact_create(
    method dingtalk_oapi_role_simplelist (line 2002) | def dingtalk_oapi_role_simplelist(
    method dingtalk_oapi_attendance_getsimplegroups (line 2026) | def dingtalk_oapi_attendance_getsimplegroups(
    method dingtalk_oapi_attendance_getleaveapproveduration (line 2047) | def dingtalk_oapi_attendance_getleaveapproveduration(
    method dingtalk_oapi_role_addrolesforemps (line 2071) | def dingtalk_oapi_role_addrolesforemps(
    method dingtalk_oapi_extcontact_get (line 2092) | def dingtalk_oapi_extcontact_get(
    method dingtalk_oapi_attendance_getusergroup (line 2109) | def dingtalk_oapi_attendance_getusergroup(
    method dingtalk_oapi_role_removerolesforemps (line 2127) | def dingtalk_oapi_role_removerolesforemps(
    method dingtalk_oapi_role_deleterole (line 2148) | def dingtalk_oapi_role_deleterole(
    method dingtalk_oapi_role_getrolegroup (line 2166) | def dingtalk_oapi_role_getrolegroup(
    method dingtalk_oapi_checkin_record_get (line 2184) | def dingtalk_oapi_checkin_record_get(
    method dingtalk_oapi_extcontact_update (line 2214) | def dingtalk_oapi_extcontact_update(
    method dingtalk_oapi_extcontact_delete (line 2231) | def dingtalk_oapi_extcontact_delete(
    method dingtalk_oapi_process_sync (line 2248) | def dingtalk_oapi_process_sync(
    method dingtalk_oapi_extcontact_list (line 2278) | def dingtalk_oapi_extcontact_list(
    method dingtalk_oapi_extcontact_listlabelgroups (line 2298) | def dingtalk_oapi_extcontact_listlabelgroups(
    method dingtalk_oapi_processinstance_create (line 2318) | def dingtalk_oapi_processinstance_create(
    method dingtalk_oapi_processinstance_list (line 2360) | def dingtalk_oapi_processinstance_list(
    method dingtalk_oapi_processinstance_get (line 2393) | def dingtalk_oapi_processinstance_get(
    method dingtalk_oapi_report_list (line 2411) | def dingtalk_oapi_report_list(
    method dingtalk_oapi_blackboard_listtopten (line 2444) | def dingtalk_oapi_blackboard_listtopten(
    method dingtalk_oapi_health_stepinfo_list (line 2462) | def dingtalk_oapi_health_stepinfo_list(
    method dingtalk_oapi_health_stepinfo_listbyuserid (line 2486) | def dingtalk_oapi_health_stepinfo_listbyuserid(
    method dingtalk_oapi_health_stepinfo_getuserstatus (line 2507) | def dingtalk_oapi_health_stepinfo_getuserstatus(
    method dingtalk_oapi_process_copy (line 2524) | def dingtalk_oapi_process_copy(
    method dingtalk_oapi_message_corpconversation_asyncsendbycode (line 2557) | def dingtalk_oapi_message_corpconversation_asyncsendbycode(
    method dingtalk_oapi_message_corpconversation_asyncsend (line 2592) | def dingtalk_oapi_message_corpconversation_asyncsend(
    method dingtalk_corp_hrm_employee_addresumerecord (line 2625) | def dingtalk_corp_hrm_employee_addresumerecord(
    method dingtalk_oapi_message_corpconversation_getsendprogress (line 2664) | def dingtalk_oapi_message_corpconversation_getsendprogress(
    method dingtalk_oapi_message_corpconversation_getsendresult (line 2685) | def dingtalk_oapi_message_corpconversation_getsendresult(
    method dingtalk_oapi_media_upload (line 2705) | def dingtalk_oapi_media_upload(
    method dingtalk_oapi_user_getuserinfo (line 2725) | def dingtalk_oapi_user_getuserinfo(
    method dingtalk_oapi_attendance_list (line 2742) | def dingtalk_oapi_attendance_list(
    method dingtalk_oapi_attendance_listRecord (line 2775) | def dingtalk_oapi_attendance_listRecord(
    method dingtalk_oapi_service_set_corp_ipwhitelist (line 2802) | def dingtalk_oapi_service_set_corp_ipwhitelist(
    method dingtalk_oapi_service_reauth_corp (line 2822) | def dingtalk_oapi_service_reauth_corp(
    method dingtalk_oapi_chat_send (line 2842) | def dingtalk_oapi_chat_send(
    method dingtalk_oapi_chat_getReadList (line 2889) | def dingtalk_oapi_chat_getReadList(
    method dingtalk_oapi_chat_update (line 2912) | def dingtalk_oapi_chat_update(
    method dingtalk_oapi_department_list_parent_depts (line 2974) | def dingtalk_oapi_department_list_parent_depts(
    method dingtalk_oapi_department_list_parent_depts_by_dept (line 2991) | def dingtalk_oapi_department_list_parent_depts_by_dept(
    method dingtalk_oapi_chat_create (line 3008) | def dingtalk_oapi_chat_create(
    method dingtalk_oapi_department_update (line 3061) | def dingtalk_oapi_department_update(
    method dingtalk_oapi_department_list (line 3141) | def dingtalk_oapi_department_list(
    method dingtalk_oapi_user_getUseridByUnionid (line 3164) | def dingtalk_oapi_user_getUseridByUnionid(
    method dingtalk_oapi_user_can_access_microapp (line 3181) | def dingtalk_oapi_user_can_access_microapp(
    method dingtalk_oapi_user_get_admin (line 3201) | def dingtalk_oapi_user_get_admin(
    method dingtalk_oapi_user_list (line 3213) | def dingtalk_oapi_user_list(
    method dingtalk_oapi_user_simplelist (line 3242) | def dingtalk_oapi_user_simplelist(
    method dingtalk_oapi_user_batchdelete (line 3271) | def dingtalk_oapi_user_batchdelete(
    method dingtalk_oapi_user_delete (line 3288) | def dingtalk_oapi_user_delete(
    method dingtalk_oapi_user_create (line 3305) | def dingtalk_oapi_user_create(
    method dingtalk_oapi_department_list_ids (line 3367) | def dingtalk_oapi_department_list_ids(
    method dingtalk_oapi_user_update (line 3384) | def dingtalk_oapi_user_update(
    method dingtalk_oapi_user_get (line 3452) | def dingtalk_oapi_user_get(
    method dingtalk_oapi_sso_getuserinfo (line 3469) | def dingtalk_oapi_sso_getuserinfo(
    method dingtalk_oapi_chat_get (line 3489) | def dingtalk_oapi_chat_get(
    method dingtalk_oapi_department_get (line 3506) | def dingtalk_oapi_department_get(
    method dingtalk_oapi_department_delete (line 3526) | def dingtalk_oapi_department_delete(
    method dingtalk_oapi_department_create (line 3543) | def dingtalk_oapi_department_create(
    method dingtalk_oapi_gettoken (line 3605) | def dingtalk_oapi_gettoken(
    method dingtalk_oapi_call_back_delete_call_back (line 3631) | def dingtalk_oapi_call_back_delete_call_back(
    method dingtalk_oapi_call_back_update_call_back (line 3643) | def dingtalk_oapi_call_back_update_call_back(
    method dingtalk_oapi_call_back_get_call_back (line 3669) | def dingtalk_oapi_call_back_get_call_back(
    method dingtalk_oapi_sns_get_sns_token (line 3681) | def dingtalk_oapi_sns_get_sns_token(
    method dingtalk_oapi_service_get_unactive_corp (line 3701) | def dingtalk_oapi_service_get_unactive_corp(
    method dingtalk_oapi_service_get_agent (line 3718) | def dingtalk_oapi_service_get_agent(
    method dingtalk_oapi_service_get_auth_info (line 3744) | def dingtalk_oapi_service_get_auth_info(
    method dingtalk_oapi_service_get_corp_token (line 3764) | def dingtalk_oapi_service_get_corp_token(
    method dingtalk_oapi_service_activate_suite (line 3784) | def dingtalk_oapi_service_activate_suite(
    method dingtalk_oapi_service_get_permanent_code (line 3807) | def dingtalk_oapi_service_get_permanent_code(
    method dingtalk_oapi_service_get_suite_token (line 3824) | def dingtalk_oapi_service_get_suite_token(
    method dingtalk_oapi_call_back_get_call_back_failed_result (line 3847) | def dingtalk_oapi_call_back_get_call_back_failed_result(
    method dingtalk_oapi_call_back_register_call_back (line 3859) | def dingtalk_oapi_call_back_register_call_back(
    method dingtalk_oapi_user_get_org_user_count (line 3885) | def dingtalk_oapi_user_get_org_user_count(
    method dingtalk_oapi_message_send_to_conversation (line 3902) | def dingtalk_oapi_message_send_to_conversation(
    method dingtalk_oapi_sns_getuserinfo (line 3952) | def dingtalk_oapi_sns_getuserinfo(
    method dingtalk_oapi_sns_get_persistent_code (line 3969) | def dingtalk_oapi_sns_get_persistent_code(
    method dingtalk_oapi_microapp_create (line 3986) | def dingtalk_oapi_microapp_create(
    method dingtalk_oapi_microapp_update (line 4019) | def dingtalk_oapi_microapp_update(
    method dingtalk_oapi_microapp_list (line 4054) | def dingtalk_oapi_microapp_list(
    method dingtalk_oapi_checkin_record (line 4066) | def dingtalk_oapi_checkin_record(
    method dingtalk_oapi_microapp_delete (line 4098) | def dingtalk_oapi_microapp_delete(
    method dingtalk_oapi_microapp_list_by_userid (line 4115) | def dingtalk_oapi_microapp_list_by_userid(
    method dingtalk_oapi_microapp_visible_scopes (line 4132) | def dingtalk_oapi_microapp_visible_scopes(
    method dingtalk_oapi_microapp_set_visible_scopes (line 4149) | def dingtalk_oapi_microapp_set_visible_scopes(
    method dingtalk_oapi_microapp_rule_get_rule_list (line 4175) | def dingtalk_oapi_microapp_rule_get_rule_list(
    method dingtalk_oapi_microapp_rule_get_user_total (line 4195) | def dingtalk_oapi_microapp_rule_get_user_total(
    method dingtalk_oapi_sso_gettoken (line 4215) | def dingtalk_oapi_sso_gettoken(
    method dingtalk_oapi_get_jsapi_ticket (line 4235) | def dingtalk_oapi_get_jsapi_ticket(
    method dingtalk_oapi_microapp_rule_delete (line 4247) | def dingtalk_oapi_microapp_rule_delete(
    method dingtalk_oapi_sns_gettoken (line 4267) | def dingtalk_oapi_sns_gettoken(
    method dingtalk_oapi_auth_scopes (line 4287) | def dingtalk_oapi_auth_scopes(
    method dingtalk_oapi_process_gettodonum (line 4299) | def dingtalk_oapi_process_gettodonum(
    method dingtalk_oapi_report_getunreadcount (line 4317) | def dingtalk_oapi_report_getunreadcount(
    method dingtalk_oapi_smartdevice_visitor_addvisitor (line 4334) | def dingtalk_oapi_smartdevice_visitor_addvisitor(
    method dingtalk_oapi_smartdevice_visitor_editvisitor (line 4352) | def dingtalk_oapi_smartdevice_visitor_editvisitor(
    method dingtalk_oapi_robot_send (line 4373) | def dingtalk_oapi_robot_send(
    method dingtalk_oapi_calendar_create (line 4408) | def dingtalk_oapi_calendar_create(
    method dingtalk_oapi_ding_create (line 4427) | def dingtalk_oapi_ding_create(
    method dingtalk_oapi_chat_updategroupnick (line 4461) | def dingtalk_oapi_chat_updategroupnick(
    method dingtalk_oapi_attendance_getupdatedata (line 4485) | def dingtalk_oapi_attendance_getupdatedata(
    method dingtalk_oapi_cspace_add_to_single_chat (line 4508) | def dingtalk_oapi_cspace_add_to_single_chat(
    method dingtalk_oapi_cspace_add (line 4534) | def dingtalk_oapi_cspace_add(
    method dingtalk_oapi_cspace_get_custom_space (line 4569) | def dingtalk_oapi_cspace_get_custom_space(
    method dingtalk_oapi_cspace_grant_custom_space (line 4589) | def dingtalk_oapi_cspace_grant_custom_space(
    method dingtalk_oapi_file_upload_transaction (line 4624) | def dingtalk_oapi_file_upload_transaction(
    method dingtalk_oapi_file_upload_chunk (line 4650) | def dingtalk_oapi_file_upload_chunk(
    method dingtalk_oapi_file_upload_single (line 4676) | def dingtalk_oapi_file_upload_single(
    method dingtalk_oapi_org_setoaurl (line 4699) | def dingtalk_oapi_org_setoaurl(
    method dingtalk_oapi_call_removeuserlist (line 4720) | def dingtalk_oapi_call_removeuserlist(
    method dingtalk_oapi_call_setuserlist (line 4737) | def dingtalk_oapi_call_setuserlist(
    method dingtalk_oapi_call_calluser (line 4754) | def dingtalk_oapi_call_calluser(
    method dingtalk_oapi_call_getuserlist (line 4777) | def dingtalk_oapi_call_getuserlist(
    method dingtalk_oapi_org_setscreen (line 4798) | def dingtalk_oapi_org_setscreen(
    method dingtalk_oapi_smartdevice_removeface (line 4821) | def dingtalk_oapi_smartdevice_removeface(
    method dingtalk_oapi_sns_getuserinfo_bycode (line 4839) | def dingtalk_oapi_sns_getuserinfo_bycode(
    method dingtalk_oapi_hrm_employee_getdismissionlist (line 4856) | def dingtalk_oapi_hrm_employee_getdismissionlist(
    method dingtalk_oapi_hrm_employee_get (line 4879) | def dingtalk_oapi_hrm_employee_get(
    method dingtalk_oapi_hrm_employee_addresumerecord (line 4896) | def dingtalk_oapi_hrm_employee_addresumerecord(
    method dingtalk_oapi_impaas_conversation_sendmessage (line 4935) | def dingtalk_oapi_impaas_conversation_sendmessage(
    method dingtalk_oapi_impaas_conversation_create (line 4959) | def dingtalk_oapi_impaas_conversation_create(
    method dingtalk_oapi_impaas_conversation_modifymember (line 4985) | def dingtalk_oapi_impaas_conversation_modifymember(
    method dingtalk_oapi_hrm_employee_updateresumerecord (line 5012) | def dingtalk_oapi_hrm_employee_updateresumerecord(
    method dingtalk_oapi_hrm_employee_delresumerecord (line 5054) | def dingtalk_oapi_hrm_employee_delresumerecord(
    method dingtalk_oapi_role_getrole (line 5075) | def dingtalk_oapi_role_getrole(
    method dingtalk_oapi_message_corpconversation_asyncsend_v2 (line 5092) | def dingtalk_oapi_message_corpconversation_asyncsend_v2(
    method dingtalk_oapi_certify_queryinfo (line 5121) | def dingtalk_oapi_certify_queryinfo(
    method dingtalk_ccoservice_servicegroup_get (line 5139) | def dingtalk_ccoservice_servicegroup_get(
    method dingtalk_ccoservice_servicegroup_addmember (line 5157) | def dingtalk_ccoservice_servicegroup_addmember(
    method dingtalk_oapi_microapp_addwithuserid (line 5178) | def dingtalk_oapi_microapp_addwithuserid(
    method dingtalk_oapi_microapp_delwithuserid (line 5198) | def dingtalk_oapi_microapp_delwithuserid(
    method dingtalk_oapi_org_listshortcut (line 5218) | def dingtalk_oapi_org_listshortcut(
    method dingtalk_oapi_org_setshortcut (line 5230) | def dingtalk_oapi_org_setshortcut(
    method dingtalk_oapi_impaas_newretail_sendstaffmessage (line 5247) | def dingtalk_oapi_impaas_newretail_sendstaffmessage(
    method dingtalk_oapi_impaas_newretail_sendstaffgroupmessage (line 5274) | def dingtalk_oapi_impaas_newretail_sendstaffgroupmessage(
    method dingtalk_oapi_smartdevice_visitor_removevisitor (line 5302) | def dingtalk_oapi_smartdevice_visitor_removevisitor(
    method dingtalk_oapi_impaas_group_getbydeptid (line 5320) | def dingtalk_oapi_impaas_group_getbydeptid(
    method dingtalk_oapi_role_updaterole (line 5337) | def dingtalk_oapi_role_updaterole(
    method dingtalk_oapi_role_addrole (line 5357) | def dingtalk_oapi_role_addrole(
    method dingtalk_oapi_role_addrolegroup (line 5377) | def dingtalk_oapi_role_addrolegroup(
    method dingtalk_oapi_impaas_relation_add (line 5395) | def dingtalk_oapi_impaas_relation_add(
    method dingtalk_oapi_chat_transform (line 5427) | def dingtalk_oapi_chat_transform(
    method dingtalk_oapi_impaas_user_addprofile (line 5444) | def dingtalk_oapi_impaas_user_addprofile(
    method dingtalk_oapi_impaas_relation_del (line 5476) | def dingtalk_oapi_impaas_relation_del(
    method dingtalk_oapi_impaas_groupmember_modifymemberinfo (line 5502) | def dingtalk_oapi_impaas_groupmember_modifymemberinfo(
    method dingtalk_oapi_impaas_group_dismiss (line 5525) | def dingtalk_oapi_impaas_group_dismiss(
    method dingtalk_oapi_impaas_groupmember_getmemberlist (line 5545) | def dingtalk_oapi_impaas_groupmember_getmemberlist(
    method dingtalk_oapi_impaas_conversaion_changegroupowner (line 5571) | def dingtalk_oapi_impaas_conversaion_changegroupowner(
    method dingtalk_oapi_impaas_message_asyncsend (line 5595) | def dingtalk_oapi_impaas_message_asyncsend(
    method dingtalk_oapi_alitrip_btrip_train_city_suggest (line 5636) | def dingtalk_oapi_alitrip_btrip_train_city_suggest(
    method dingtalk_oapi_impaas_message_getmessagestatus (line 5653) | def dingtalk_oapi_impaas_message_getmessagestatus(
    method dingtalk_oapi_alitrip_btrip_cost_center_entity_delete (line 5676) | def dingtalk_oapi_alitrip_btrip_cost_center_entity_delete(
    method dingtalk_oapi_alitrip_btrip_approval_new (line 5693) | def dingtalk_oapi_alitrip_btrip_approval_new(
    method dingtalk_oapi_alitrip_btrip_category_address_get (line 5710) | def dingtalk_oapi_alitrip_btrip_category_address_get(
    method dingtalk_oapi_ccoservice_servicegroup_isignoreproblemcheck (line 5727) | def dingtalk_oapi_ccoservice_servicegroup_isignoreproblemcheck(
    method dingtalk_oapi_ccoservice_servicegroup_updateservicetime (line 5748) | def dingtalk_oapi_ccoservice_servicegroup_updateservicetime(
    method dingtalk_oapi_alitrip_btrip_apply_search (line 5774) | def dingtalk_oapi_alitrip_btrip_apply_search(
    method dingtalk_oapi_alitrip_btrip_apply_get (line 5791) | def dingtalk_oapi_alitrip_btrip_apply_get(
    method dingtalk_oapi_alitrip_btrip_cost_center_transfer (line 5808) | def dingtalk_oapi_alitrip_btrip_cost_center_transfer(
    method dingtalk_oapi_alitrip_btrip_invoice_search (line 5825) | def dingtalk_oapi_alitrip_btrip_invoice_search(
    method dingtalk_oapi_alitrip_btrip_flight_order_search (line 5842) | def dingtalk_oapi_alitrip_btrip_flight_order_search(
    method dingtalk_oapi_alitrip_btrip_train_order_search (line 5859) | def dingtalk_oapi_alitrip_btrip_train_order_search(
    method dingtalk_oapi_alitrip_btrip_cost_center_entity_add (line 5876) | def dingtalk_oapi_alitrip_btrip_cost_center_entity_add(
    method dingtalk_oapi_alitrip_btrip_hotel_order_search (line 5893) | def dingtalk_oapi_alitrip_btrip_hotel_order_search(
    method dingtalk_oapi_alitrip_btrip_cost_center_entity_set (line 5910) | def dingtalk_oapi_alitrip_btrip_cost_center_entity_set(
    method dingtalk_oapi_alitrip_btrip_cost_center_delete (line 5927) | def dingtalk_oapi_alitrip_btrip_cost_center_delete(
    method dingtalk_oapi_alitrip_btrip_cost_center_modify (line 5944) | def dingtalk_oapi_alitrip_btrip_cost_center_modify(
    method dingtalk_oapi_alitrip_btrip_cost_center_new (line 5961) | def dingtalk_oapi_alitrip_btrip_cost_center_new(
    method dingtalk_oapi_alitrip_btrip_approval_update (line 5978) | def dingtalk_oapi_alitrip_btrip_approval_update(
    method dingtalk_oapi_alitrip_btrip_cost_center_query (line 5995) | def dingtalk_oapi_alitrip_btrip_cost_center_query(
    method dingtalk_oapi_impaas_groupmember_modify (line 6012) | def dingtalk_oapi_impaas_groupmember_modify(
    method dingtalk_oapi_impaas_group_modify (line 6041) | def dingtalk_oapi_impaas_group_modify(
    method dingtalk_oapi_alitrip_btrip_vehicle_order_search (line 6070) | def dingtalk_oapi_alitrip_btrip_vehicle_order_search(
    method dingtalk_oapi_alitrip_btrip_flight_city_suggest (line 6087) | def dingtalk_oapi_alitrip_btrip_flight_city_suggest(
    method dingtalk_oapi_attendance_isopensmartreport (line 6104) | def dingtalk_oapi_attendance_isopensmartreport(
    method dingtalk_oapi_attendance_getattcolumns (line 6117) | def dingtalk_oapi_attendance_getattcolumns(
    method dingtalk_oapi_attendance_getcolumnval (line 6130) | def dingtalk_oapi_attendance_getcolumnval(
    method dingtalk_oapi_impaas_relation_get (line 6157) | def dingtalk_oapi_impaas_relation_get(
    method dingtalk_oapi_impaas_user_getlogintoken (line 6180) | def dingtalk_oapi_impaas_user_getlogintoken(
    method dingtalk_oapi_user_getDeptMember (line 6202) | def dingtalk_oapi_user_getDeptMember(
    method dingtalk_oapi_workrecord_add (line 6220) | def dingtalk_oapi_workrecord_add(
    method dingtalk_oapi_workrecord_update (line 6255) | def dingtalk_oapi_workrecord_update(
    method dingtalk_oapi_attendance_getleavetimebynames (line 6275) | def dingtalk_oapi_attendance_getleavetimebynames(
    method dingtalk_oapi_ding_task_status_update (line 6302) | def dingtalk_oapi_ding_task_status_update(
    method dingtalk_oapi_smartwork_hrm_employee_querydimission (line 6326) | def dingtalk_oapi_smartwork_hrm_employee_querydimission(
    method dingtalk_oapi_smartwork_hrm_employee_listdimission (line 6347) | def dingtalk_oapi_smartwork_hrm_employee_listdimission(
    method dingtalk_oapi_newretail_sendsms (line 6365) | def dingtalk_oapi_newretail_sendsms(
    method dingtalk_oapi_ccoservice_entrance_sendnotify (line 6383) | def dingtalk_oapi_ccoservice_entrance_sendnotify(
    method dingtalk_oapi_impaas_user_modprofile (line 6406) | def dingtalk_oapi_impaas_user_modprofile(
    method dingtalk_oapi_smartwork_hrm_employee_list (line 6435) | def dingtalk_oapi_smartwork_hrm_employee_list(
    method dingtalk_oapi_processinstance_listids (line 6456) | def dingtalk_oapi_processinstance_listids(
    method dingtalk_oapi_smartwork_hrm_employee_addpreentry (line 6489) | def dingtalk_oapi_smartwork_hrm_employee_addpreentry(
    method dingtalk_oapi_smartwork_hrm_employee_querypreentry (line 6507) | def dingtalk_oapi_smartwork_hrm_employee_querypreentry(
    method dingtalk_oapi_smartwork_hrm_employee_queryonjob (line 6528) | def dingtalk_oapi_smartwork_hrm_employee_queryonjob(
    method dingtalk_oapi_smartdevice_visitor_sendnotify (line 6552) | def dingtalk_oapi_smartdevice_visitor_sendnotify(
    method dingtalk_oapi_sns_send_msg (line 6573) | def dingtalk_oapi_sns_send_msg(
    method dingtalk_oapi_user_get_admin_scope (line 6593) | def dingtalk_oapi_user_get_admin_scope(
    method dingtalk_oapi_smartwork_hrm_employee_listcontact (line 6610) | def dingtalk_oapi_smartwork_hrm_employee_listcontact(
    method dingtalk_oapi_user_listbypage (line 6628) | def dingtalk_oapi_user_listbypage(
    method dingtalk_oapi_impaas_conversation_updateentranceid (line 6658) | def dingtalk_oapi_impaas_conversation_updateentranceid(
    method dingtalk_oapi_attendance_getleavestatus (line 6693) | def dingtalk_oapi_attendance_getleavestatus(
    method qimen_dingtalk_flow_form (line 6723) | def qimen_dingtalk_flow_form(
    method dingtalk_oapi_workrecord_getbyuserid (line 6753) | def dingtalk_oapi_workrecord_getbyuserid(
    method dingtalk_oapi_process_template_list (line 6779) | def dingtalk_oapi_process_template_list(
    method dingtalk_oapi_process_property_update (line 6802) | def dingtalk_oapi_process_property_update(
    method dingtalk_oapi_chatbot_pictureurl_get (line 6828) | def dingtalk_oapi_chatbot_pictureurl_get(
    method dingtalk_oapi_conference_publish (line 6846) | def dingtalk_oapi_conference_publish(
    method dingtalk_oapi_conference_get (line 6867) | def dingtalk_oapi_conference_get(
    method dingtalk_oapi_conference_unpublish (line 6885) | def dingtalk_oapi_conference_unpublish(
    method dingtalk_oapi_edu_guardian_list (line 6906) | def dingtalk_oapi_edu_guardian_list(
    method dingtalk_oapi_edu_guardian_get (line 6930) | def dingtalk_oapi_edu_guardian_get(
    method dingtalk_oapi_edu_student_get (line 6951) | def dingtalk_oapi_edu_student_get(
    method dingtalk_oapi_edu_student_list (line 6972) | def dingtalk_oapi_edu_student_list(
    method dingtalk_oapi_edu_class_get (line 6996) | def dingtalk_oapi_edu_class_get(
    method dingtalk_oapi_edu_class_list (line 7014) | def dingtalk_oapi_edu_class_list(
    method dingtalk_oapi_edu_grade_get (line 7038) | def dingtalk_oapi_edu_grade_get(
    method dingtalk_oapi_edu_grade_list (line 7056) | def dingtalk_oapi_edu_grade_list(
    method dingtalk_oapi_edu_teacher_get (line 7074) | def dingtalk_oapi_edu_teacher_get(
    method dingtalk_oapi_edu_campus_list (line 7095) | def dingtalk_oapi_edu_campus_list(
    method dingtalk_oapi_edu_campus_get (line 7108) | def dingtalk_oapi_edu_campus_get(
    method dingtalk_oapi_edu_period_list (line 7126) | def dingtalk_oapi_edu_period_list(
    method dingtalk_oapi_edu_period_get (line 7144) | def dingtalk_oapi_edu_period_get(
    method dingtalk_oapi_edu_teacher_list (line 7162) | def dingtalk_oapi_edu_teacher_list(
    method dingtalk_oapi_corp_conversation_member_list (line 7180) | def dingtalk_oapi_corp_conversation_member_list(
    method dingtalk_oapi_faceauth_get (line 7203) | def dingtalk_oapi_faceauth_get(
    method dingtalk_oapi_impaas_otoconversation_create (line 7224) | def dingtalk_oapi_impaas_otoconversation_create(
    method dingtalk_oapi_smartdevice_facegroup_member_update (line 7257) | def dingtalk_oapi_smartdevice_facegroup_member_update(
    method dingtalk_oapi_smartdevice_facegroup_member_list (line 7281) | def dingtalk_oapi_smartdevice_facegroup_member_list(
    method dingtalk_oapi_smartdevice_facegroup_device_update (line 7305) | def dingtalk_oapi_smartdevice_facegroup_device_update(
    method dingtalk_oapi_smartdevice_facegroup_device_list (line 7329) | def dingtalk_oapi_smartdevice_facegroup_device_list(
    method dingtalk_oapi_smartdevice_facegroup_get (line 7359) | def dingtalk_oapi_smartdevice_facegroup_get(
    method dingtalk_oapi_smartdevice_facegroup_create (line 7377) | def dingtalk_oapi_smartdevice_facegroup_create(
    method dingtalk_oapi_smartdevice_facegroup_update (line 7413) | def dingtalk_oapi_smartdevice_facegroup_update(
    method dingtalk_oapi_smartdevice_facegroup_enable (line 7449) | def dingtalk_oapi_smartdevice_facegroup_enable(
    method dingtalk_oapi_smartdevice_facegroup_removeall (line 7473) | def dingtalk_oapi_smartdevice_facegroup_removeall(
    method dingtalk_oapi_im_chatbot_delete (line 7491) | def dingtalk_oapi_im_chatbot_delete(
    method dingtalk_oapi_im_chatbot_get (line 7512) | def dingtalk_oapi_im_chatbot_get(
    method dingtalk_oapi_im_chat_cid_convert (line 7530) | def dingtalk_oapi_im_chat_cid_convert(
    method dingtalk_oapi_im_chat_servicegroup_create (line 7548) | def dingtalk_oapi_im_chat_servicegroup_create(
    method dingtalk_oapi_im_chat_servicegroup_disband (line 7572) | def dingtalk_oapi_im_chat_servicegroup_disband(
    method dingtalk_oapi_im_chat_servicegroup_member_query (line 7589) | def dingtalk_oapi_im_chat_servicegroup_member_query(
    method dingtalk_oapi_im_chat_servicegroup_query (line 7615) | def dingtalk_oapi_im_chat_servicegroup_query(
    method dingtalk_oapi_im_chat_servicegroup_member_update (line 7632) | def dingtalk_oapi_im_chat_servicegroup_member_update(
    method dingtalk_oapi_smartdevice_bind_create (line 7655) | def dingtalk_oapi_smartdevice_bind_create(
    method dingtalk_oapi_statistics_details (line 7673) | def dingtalk_oapi_statistics_details(
    method dingtalk_oapi_chatbot_message_send (line 7691) | def dingtalk_oapi_chatbot_message_send(
    method dingtalk_oapi_attendance_corp_inviteactive_open (line 7715) | def dingtalk_oapi_attendance_corp_inviteactive_open(
    method dingtalk_oapi_live_grouplive_statistics (line 7735) | def dingtalk_oapi_live_grouplive_statistics(
    method dingtalk_oapi_live_grouplive_list (line 7758) | def dingtalk_oapi_live_grouplive_list(
    method dingtalk_oapi_process_form_get (line 7785) | def dingtalk_oapi_process_form_get(
    method dingtalk_oapi_process_template_save (line 7803) | def dingtalk_oapi_process_template_save(
    method dingtalk_oapi_calendar_list (line 7827) | def dingtalk_oapi_calendar_list(
    method dingtalk_oapi_live_playback (line 7866) | def dingtalk_oapi_live_playback(
    method dingtalk_oapi_live_create (line 7895) | def dingtalk_oapi_live_create(
    method dingtalk_oapi_live_query (line 7942) | def dingtalk_oapi_live_query(
    method dingtalk_oapi_process_baseinfo_list (line 7962) | def dingtalk_oapi_process_baseinfo_list(
    method dingtalk_oapi_process_template_upgradeinfo_query (line 7980) | def dingtalk_oapi_process_template_upgradeinfo_query(
    method dingtalk_oapi_process_template_upgrade (line 7998) | def dingtalk_oapi_process_template_upgrade(
    method dingtalk_oapi_dingpay_order_terminate (line 8025) | def dingtalk_oapi_dingpay_order_terminate(
    method dingtalk_oapi_customize_conversation_update (line 8052) | def dingtalk_oapi_customize_conversation_update(
    method dingtalk_oapi_smartwork_hrm_employee_unionexport (line 8079) | def dingtalk_oapi_smartwork_hrm_employee_unionexport(
    method dingtalk_oapi_callback_failrecord_confirm (line 8097) | def dingtalk_oapi_callback_failrecord_confirm(
    method dingtalk_oapi_callback_failrecord_list (line 8115) | def dingtalk_oapi_callback_failrecord_list(
    method dingtalk_oapi_report_statistics (line 8133) | def dingtalk_oapi_report_statistics(
    method dingtalk_oapi_attendance_vacation_record_list (line 8150) | def dingtalk_oapi_attendance_vacation_record_list(
    method dingtalk_oapi_attendance_vacation_quota_list (line 8180) | def dingtalk_oapi_attendance_vacation_quota_list(
    method dingtalk_oapi_appstore_internal_order_get (line 8210) | def dingtalk_oapi_appstore_internal_order_get(
    method dingtalk_oapi_appstore_internal_skupage_get (line 8228) | def dingtalk_oapi_appstore_internal_skupage_get(
    method dingtalk_oapi_appstore_internal_unfinishedorder_list (line 8255) | def dingtalk_oapi_appstore_internal_unfinishedorder_list(
    method dingtalk_oapi_appstore_internal_order_finish (line 8279) | def dingtalk_oapi_appstore_internal_order_finish(
    method dingtalk_oapi_appstore_internal_order_consume (line 8297) | def dingtalk_oapi_appstore_internal_order_consume(
    method dingtalk_oapi_attendance_vacation_quota_update (line 8324) | def dingtalk_oapi_attendance_vacation_quota_update(
    method dingtalk_oapi_attendance_vacation_quota_init (line 8345) | def dingtalk_oapi_attendance_vacation_quota_init(
    method dingtalk_oapi_attendance_vacation_type_update (line 8366) | def dingtalk_oapi_attendance_vacation_type_update(
    method dingtalk_oapi_attendance_vacation_type_list (line 8405) | def dingtalk_oapi_attendance_vacation_type_list(
    method dingtalk_oapi_attendance_vacation_type_delete (line 8423) | def dingtalk_oapi_attendance_vacation_type_delete(
    method dingtalk_oapi_attendance_vacation_type_create (line 8444) | def dingtalk_oapi_attendance_vacation_type_create(
    method dingtalk_oapi_calendar_delete (line 8480) | def dingtalk_oapi_calendar_delete(
    method dingtalk_oapi_message_send_to_single_conversation (line 8501) | def dingtalk_oapi_message_send_to_single_conversation(
    method dingtalk_oapi_workbench_shortcut_delete (line 8524) | def dingtalk_oapi_workbench_shortcut_delete(
    method dingtalk_oapi_workbench_shortcut_getguideuri (line 8545) | def dingtalk_oapi_workbench_shortcut_getguideuri(
    method dingtalk_oapi_workbench_shortcut_list (line 8563) | def dingtalk_oapi_workbench_shortcut_list(
    method dingtalk_oapi_workbench_shortcut_add (line 8587) | def dingtalk_oapi_workbench_shortcut_add(
    method dingtalk_oapi_workbench_shortcut_update (line 8620) | def dingtalk_oapi_workbench_shortcut_update(
    method dingtalk_oapi_report_comment_list (line 8653) | def dingtalk_oapi_report_comment_list(
    method dingtalk_oapi_report_receiver_list (line 8677) | def dingtalk_oapi_report_receiver_list(
    method dingtalk_oapi_report_statistics_listbytype (line 8701) | def dingtalk_oapi_report_statistics_listbytype(
    method dingtalk_oapi_message_corpconversation_recall (line 8728) | def dingtalk_oapi_message_corpconversation_recall(
    method dingtalk_oapi_processinstance_cspace_info (line 8749) | def dingtalk_oapi_processinstance_cspace_info(
    method dingtalk_oapi_process_save (line 8769) | def dingtalk_oapi_process_save(
    method dingtalk_oapi_process_form_condition_list (line 8786) | def dingtalk_oapi_process_form_condition_list(
    method dingtalk_oapi_robot_message_getpushid (line 8808) | def dingtalk_oapi_robot_message_getpushid(
    method dingtalk_oapi_robot_message_statistics_listbypushid (line 8821) | def dingtalk_oapi_robot_message_statistics_listbypushid(
    method dingtalk_oapi_robot_message_statistics_list (line 8848) | def dingtalk_oapi_robot_message_statistics_list(
    method dingtalk_oapi_robot_message_statistics_listbyconversationid (line 8872) | def dingtalk_oapi_robot_message_statistics_listbyconversationid(
    method dingtalk_oapi_smartdevice_atmachine_get_by_deptid (line 8902) | def dingtalk_oapi_smartdevice_atmachine_get_by_deptid(
    method dingtalk_oapi_smartdevice_atmachine_get_by_userid (line 8920) | def dingtalk_oapi_smartdevice_atmachine_get_by_userid(
    method dingtalk_oapi_smartdevice_atmachine_user_update (line 8938) | def dingtalk_oapi_smartdevice_atmachine_user_update(
    method dingtalk_oapi_relation_remark_modify (line 8956) | def dingtalk_oapi_relation_remark_modify(
    method dingtalk_oapi_process_workrecord_create (line 8977) | def dingtalk_oapi_process_workrecord_create(
    method dingtalk_oapi_process_workrecord_update (line 9011) | def dingtalk_oapi_process_workrecord_update(
    method dingtalk_oapi_process_workrecord_task_create (line 9039) | def dingtalk_oapi_process_workrecord_task_create(
    method dingtalk_oapi_process_workrecord_task_update (line 9067) | def dingtalk_oapi_process_workrecord_task_update(
    method dingtalk_oapi_process_workrecord_forward_create (line 9092) | def dingtalk_oapi_process_workrecord_forward_create(
    method dingtalk_oapi_process_workrecord_taskgroup_cancel (line 9117) | def dingtalk_oapi_process_workrecord_taskgroup_cancel(
    method dingtalk_oapi_process_delete (line 9142) | def dingtalk_oapi_process_delete(
    method dingtalk_oapi_smartdevice_applyoutid (line 9165) | def dingtalk_oapi_smartdevice_applyoutid(
    method dingtalk_oapi_material_article_list (line 9186) | def dingtalk_oapi_material_article_list(
    method dingtalk_oapi_material_article_delete (line 9209) | def dingtalk_oapi_material_article_delete(
    method dingtalk_oapi_material_article_publish (line 9230) | def dingtalk_oapi_material_article_publish(
    method dingtalk_oapi_material_article_get (line 9251) | def dingtalk_oapi_material_article_get(
    method dingtalk_oapi_material_article_update (line 9272) | def dingtalk_oapi_material_article_update(
    method dingtalk_oapi_material_article_add (line 9293) | def dingtalk_oapi_material_article_add(
  class TbYongHu (line 9315) | class TbYongHu(DingTalkBaseAPI):
    method taobao_appstore_subscribe_get (line 9320) | def taobao_appstore_subscribe_get(
    method taobao_user_buyer_get (line 9339) | def taobao_user_buyer_get(
    method taobao_user_seller_get (line 9358) | def taobao_user_seller_get(
    method taobao_mixnick_get (line 9377) | def taobao_mixnick_get(
    method taobao_opensecurity_uid_get (line 9396) | def taobao_opensecurity_uid_get(
    method taobao_opensecurity_isv_uid_get (line 9415) | def taobao_opensecurity_isv_uid_get(
    method taobao_open_account_delete (line 9434) | def taobao_open_account_delete(
    method taobao_open_account_update (line 9455) | def taobao_open_account_update(
    method taobao_open_account_create (line 9473) | def taobao_open_account_create(
    method taobao_open_account_list (line 9491) | def taobao_open_account_list(
    method taobao_open_account_search (line 9512) | def taobao_open_account_search(
    method taobao_open_account_token_validate (line 9530) | def taobao_open_account_token_validate(
    method taobao_open_account_token_apply (line 9548) | def taobao_open_account_token_apply(
    method taobao_open_sms_sendvercode (line 9581) | def taobao_open_sms_sendvercode(
    method taobao_open_sms_checkvercode (line 9600) | def taobao_open_sms_checkvercode(
    method taobao_open_sms_sendmsg (line 9619) | def taobao_open_sms_sendmsg(
    method taobao_open_account_index_find (line 9638) | def taobao_open_account_index_find(
    method taobao_open_sms_rmdelaymsg (line 9658) | def taobao_open_sms_rmdelaymsg(
    method taobao_data_wifi_put (line 9677) | def taobao_data_wifi_put(
    method alibaba_aliqin_flow_wallet_check_balance (line 9698) | def alibaba_aliqin_flow_wallet_check_balance(
    method taobao_open_sms_batchsendmsg (line 9717) | def taobao_open_sms_batchsendmsg(
    method taobao_user_avatar_get (line 9736) | def taobao_user_avatar_get(
    method tmall_service_settleadjustment_modify (line 9755) | def tmall_service_settleadjustment_modify(
    method taobao_rdc_aligenius_account_validate (line 9774) | def taobao_rdc_aligenius_account_validate(
    method tmall_fantasy_kindle_crowd (line 9787) | def tmall_fantasy_kindle_crowd(
    method alibaba_interact_ui_video (line 9802) | def alibaba_interact_ui_video(
    method taobao_messageaccount_messsage_mass_send (line 9821) | def taobao_messageaccount_messsage_mass_send(
    method taobao_messageaccount_messsage_reply (line 9839) | def taobao_messageaccount_messsage_reply(
    method taobao_messageaccount_messsage_normal_send (line 9857) | def taobao_messageaccount_messsage_normal_send(
    method taobao_miniapp_messsage_normal_send (line 9876) | def taobao_miniapp_messsage_normal_send(
    method taobao_miniapp_messsage_reply (line 9895) | def taobao_miniapp_messsage_reply(
    method wdk_hema_orderlist_get (line 9913) | def wdk_hema_orderlist_get(
    method taobao_miniapp_userInfo_get (line 9933) | def taobao_miniapp_userInfo_get(
    method taobao_mixnick_change (line 9946) | def taobao_mixnick_change(
  class TbLeiMu (line 9968) | class TbLeiMu(DingTalkBaseAPI):
    method taobao_itempropvalues_get (line 9973) | def taobao_itempropvalues_get(
    method taobao_itemprops_get (line 10002) | def taobao_itemprops_get(
    method taobao_itemcats_get (line 10056) | def taobao_itemcats_get(
    method taobao_itemcats_authorize_get (line 10080) | def taobao_itemcats_authorize_get(
    method alibaba_wholesale_category_get (line 10099) | def alibaba_wholesale_category_get(
  class TbShangPin (line 10113) | class TbShangPin(DingTalkBaseAPI):
    method taobao_product_get (line 10118) | def taobao_product_get(
    method taobao_products_search (line 10146) | def taobao_products_search(
    method taobao_product_add (line 10197) | def taobao_product_add(
    method taobao_product_img_upload (line 10258) | def taobao_product_img_upload(
    method taobao_product_propimg_upload (line 10289) | def taobao_product_propimg_upload(
    method taobao_product_update (line 10320) | def taobao_product_update(
    method taobao_products_get (line 10366) | def taobao_products_get(
    method taobao_items_onsale_get (line 10394) | def taobao_items_onsale_get(
    method taobao_item_update (line 10457) | def taobao_item_update(
    method taobao_item_add (line 10837) | def taobao_item_add(
    method taobao_item_img_upload (line 11222) | def taobao_item_img_upload(
    method taobao_item_img_delete (line 11260) | def taobao_item_img_delete(
    method taobao_item_propimg_delete (line 11284) | def taobao_item_propimg_delete(
    method taobao_item_propimg_upload (line 11306) | def taobao_item_propimg_upload(
    method taobao_item_sku_add (line 11337) | def taobao_item_sku_add(
    method taobao_item_sku_get (line 11377) | def taobao_item_sku_get(
    method taobao_item_sku_update (line 11402) | def taobao_item_sku_update(
    method taobao_item_skus_get (line 11442) | def taobao_item_skus_get(
    method taobao_item_update_delisting (line 11464) | def taobao_item_update_delisting(
    method taobao_item_update_listing (line 11483) | def taobao_item_update_listing(
    method taobao_item_delete (line 11505) | def taobao_item_delete(
    method taobao_item_joint_img (line 11523) | def taobao_item_joint_img(
    method taobao_item_joint_propimg (line 11557) | def taobao_item_joint_propimg(
    method taobao_items_inventory_get (line 11588) | def taobao_items_inventory_get(
    method taobao_items_custom_get (line 11656) | def taobao_items_custom_get(
    method taobao_skus_custom_get (line 11678) | def taobao_skus_custom_get(
    method taobao_item_sku_delete (line 11700) | def taobao_item_sku_delete(
    method taobao_aftersale_get (line 11734) | def taobao_aftersale_get(
    method taobao_item_quantity_update (line 11748) | def taobao_item_quantity_update(
    method taobao_item_templates_get (line 11779) | def taobao_item_templates_get(
    method taobao_item_price_update (line 11793) | def taobao_item_price_update(
    method taobao_item_sku_price_update (line 11955) | def taobao_item_sku_price_update(
    method taobao_ump_promotion_get (line 11994) | def taobao_ump_promotion_get(
    method taobao_skus_quantity_update (line 12013) | def taobao_skus_quantity_update(
    method taobao_item_anchor_get (line 12041) | def taobao_item_anchor_get(
    method tmall_item_desc_modules_get (line 12062) | def tmall_item_desc_modules_get(
    method taobao_item_add_rules_get (line 12084) | def taobao_item_add_rules_get(
    method taobao_item_barcode_update (line 12105) | def taobao_item_barcode_update(
    method tmall_item_schema_add (line 12139) | def tmall_item_schema_add(
    method tmall_item_add_schema_get (line 12163) | def tmall_item_add_schema_get(
    method tmall_product_add_schema_get (line 12191) | def tmall_product_add_schema_get(
    method tmall_product_match_schema_get (line 12213) | def tmall_product_match_schema_get(
    method tmall_product_schema_match (line 12232) | def tmall_product_schema_match(
    method tmall_product_schema_add (line 12254) | def tmall_product_schema_add(
    method taobao_item_update_schema_get (line 12279) | def taobao_item_update_schema_get(
    method taobao_item_add_schema_get (line 12301) | def taobao_item_add_schema_get(
    method taobao_item_schema_add (line 12320) | def taobao_item_schema_add(
    method taobao_item_schema_update (line 12344) | def taobao_item_schema_update(
    method tmall_product_update_schema_get (line 12374) | def tmall_product_update_schema_get(
    method tmall_product_schema_update (line 12393) | def tmall_product_schema_update(
    method tmall_item_schema_update (line 12414) | def tmall_item_schema_update(
    method tmall_item_update_schema_get (line 12440) | def tmall_item_update_schema_get(
    method tmall_product_schema_get (line 12465) | def tmall_product_schema_get(
    method tmall_item_increment_update_schema_get (line 12484) | def tmall_item_increment_update_schema_get(
    method tmall_item_schema_increment_update (line 12506) | def tmall_item_schema_increment_update(
    method tmall_item_price_update (line 12527) | def tmall_item_price_update(
    method taobao_item_schema_increment_update (line 12555) | def taobao_item_schema_increment_update(
    method taobao_item_increment_update_schema_get (line 12580) | def taobao_item_increment_update_schema_get(
    method tmall_item_sizemapping_templates_list (line 12605) | def tmall_item_sizemapping_templates_list(
    method tmall_item_sizemapping_template_get (line 12619) | def tmall_item_sizemapping_template_get(
    method tmall_item_sizemapping_template_delete (line 12637) | def tmall_item_sizemapping_template_delete(
    method tmall_item_sizemapping_template_update (line 12655) | def tmall_item_sizemapping_template_update(
    method tmall_item_sizemapping_template_create (line 12679) | def tmall_item_sizemapping_template_create(
    method alibaba_wholesale_goods_get (line 12701) | def alibaba_wholesale_goods_get(
    method alibaba_wholesale_goods_search (line 12722) | def alibaba_wholesale_goods_search(
    method taobao_item_seller_get (line 12740) | def taobao_item_seller_get(
    method taobao_items_seller_list_get (line 12762) | def taobao_items_seller_list_get(
    method tmall_item_outerid_update (line 12783) | def tmall_item_outerid_update(
    method tmall_item_shiptime_update (line 12808) | def tmall_item_shiptime_update(
    method alibaba_wholesale_shippingline_template_init (line 12859) | def alibaba_wholesale_shippingline_template_init(
    method tmall_item_simpleschema_add (line 12878) | def tmall_item_simpleschema_add(
    method tmall_item_add_simpleschema_get (line 12896) | def tmall_item_add_simpleschema_get(
    method taobao_item_qualification_display_get (line 12909) | def taobao_item_qualification_display_get(
    method tmall_item_simpleschema_update (line 12934) | def tmall_item_simpleschema_update(
    method tmall_item_quantity_update (line 12955) | def tmall_item_quantity_update(
    method tmall_item_update_simpleschema_get (line 12983) | def tmall_item_update_simpleschema_get(
    method tmall_item_calculate_hscode_get (line 13000) | def tmall_item_calculate_hscode_get(
    method tmall_item_combine_get (line 13018) | def tmall_item_combine_get(
    method tmall_item_zhizu_shoes_size_upload (line 13037) | def tmall_item_zhizu_shoes_size_upload(
    method tmall_item_dapei_template_query (line 13063) | def tmall_item_dapei_template_query(
    method taobao_baike_import_zhubao_picture (line 13087) | def taobao_baike_import_zhubao_picture(
    method taobao_baike_import_zhubao_data (line 13105) | def taobao_baike_import_zhubao_data(
    method tmall_item_hscode_detail_get (line 13123) | def tmall_item_hscode_detail_get(
    method taobao_baike_permission_zhubao_disable (line 13142) | def taobao_baike_permission_zhubao_disable(
    method taobao_baike_permission_zhubao_enable (line 13163) | def taobao_baike_permission_zhubao_enable(
    method tmall_item_edu_update_outline (line 13184) | def tmall_item_edu_update_outline(
    method alibaba_interact_item_query (line 13206) | def alibaba_interact_item_query(
    method alibaba_interact_item_search (line 13237) | def alibaba_interact_item_search(
    method alibaba_gpu_add_schema_get (line 13268) | def alibaba_gpu_add_schema_get(
    method alibaba_gpu_schema_add (line 13292) | def alibaba_gpu_schema_add(
    method alibaba_gpu_update_schema_get (line 13320) | def alibaba_gpu_update_schema_get(
    method alibaba_gpu_schema_update (line 13341) | def alibaba_gpu_schema_update(
    method alibaba_gpu_schema_catsearch (line 13365) | def alibaba_gpu_schema_catsearch(
    method taobao_isp_pos_vendor_feedback (line 13392) | def taobao_isp_pos_vendor_feedback(
    method taobao_item_carturl_get (line 13490) | def taobao_item_carturl_get(
  class TbJiaoYi (line 13521) | class TbJiaoYi(DingTalkBaseAPI):
    method taobao_trades_sold_get (line 13526) | def taobao_trades_sold_get(
    method taobao_trade_get (line 13580) | def taobao_trade_get(
    method taobao_trade_memo_add (line 13602) | def taobao_trade_memo_add(
    method taobao_trade_memo_update (line 13627) | def taobao_trade_memo_update(
    method taobao_refunds_receive_get (line 13655) | def taobao_refunds_receive_get(
    method taobao_trade_fullinfo_get (line 13696) | def taobao_trade_fullinfo_get(
    method taobao_trade_close (line 13722) | def taobao_trade_close(
    method taobao_trades_sold_increment_get (line 13744) | def taobao_trades_sold_increment_get(
    method taobao_trade_confirmfee_get (line 13792) | def taobao_trade_confirmfee_get(
    method taobao_trade_ordersku_update (line 13811) | def taobao_trade_ordersku_update(
    method taobao_trade_shippingaddress_update (line 13836) | def taobao_trade_shippingaddress_update(
    method taobao_trade_amount_get (line 13879) | def taobao_trade_amount_get(
    method taobao_trade_receivetime_delay (line 13903) | def taobao_trade_receivetime_delay(
    method taobao_trade_postage_update (line 13924) | def taobao_trade_postage_update(
    method taobao_trades_sold_incrementv_get (line 13947) | def taobao_trades_sold_incrementv_get(
    method taobao_trade_acquire_online_precreate (line 13992) | def taobao_trade_acquire_online_precreate(
    method alibaba_trade_aliance_create (line 14032) | def alibaba_trade_aliance_create(
    method alibaba_wdk_trade_order_query (line 14049) | def alibaba_wdk_trade_order_query(
    method alibaba_wdk_trade_order_create (line 14067) | def alibaba_wdk_trade_order_create(
    method alibaba_wdk_trade_order_cancel (line 14085) | def alibaba_wdk_trade_order_cancel(
    method taobao_trade_fullinfo_get_customization (line 14103) | def taobao_trade_fullinfo_get_customization(
    method alibaba_wdk_trade_refund_create (line 14132) | def alibaba_wdk_trade_refund_create(
    method alibaba_wdk_trade_refund_query (line 14150) | def alibaba_wdk_trade_refund_query(
    method alibaba_wdk_trade_refund_inform (line 14169) | def alibaba_wdk_trade_refund_inform(
    method alibaba_omni_saas_order_create (line 14187) | def alibaba_omni_saas_order_create(
    method tmall_ascp_orders_sale_create (line 14235) | def tmall_ascp_orders_sale_create(
    method taobao_rdc_aligenius_ordermsg_update (line 14252) | def taobao_rdc_aligenius_ordermsg_update(
    method taobao_rdc_aligenius_order_event_update (line 14276) | def taobao_rdc_aligenius_order_event_update(
    method tmall_cloudstore_trade_pos_update (line 14294) | def tmall_cloudstore_trade_pos_update(
    method taobao_trade_voucher_upload (line 14321) | def taobao_trade_voucher_upload(
    method cainiao_refund_refundactions_display (line 14349) | def cainiao_refund_refundactions_display(
    method cainiao_refund_refundactions_get (line 14366) | def cainiao_refund_refundactions_get(
    method cainiao_refund_refundactions_judgement (line 14383) | def cainiao_refund_refundactions_judgement(
  class TbPingJia (line 14401) | class TbPingJia(DingTalkBaseAPI):
    method taobao_traderates_get (line 14406) | def taobao_traderates_get(
    method taobao_traderate_add (line 14454) | def taobao_traderate_add(
    method taobao_traderate_list_add (line 14488) | def taobao_traderate_list_add(
    method taobao_traderate_explain_add (line 14519) | def taobao_traderate_explain_add(
    method taobao_traderate_impr_imprword_byfeedid_get (line 14541) | def taobao_traderate_impr_imprword_byfeedid_get(
    method taobao_traderate_impr_imprwords_get (line 14560) | def taobao_traderate_impr_imprwords_get(
    method tmall_traderate_feeds_get (line 14582) | def tmall_traderate_feeds_get(
    method tmall_traderate_itemtags_get (line 14601) | def tmall_traderate_itemtags_get(
  class TbWuLiu (line 14621) | class TbWuLiu(DingTalkBaseAPI):
    method taobao_areas_get (line 14626) | def taobao_areas_get(
    method taobao_logistics_companies_get (line 14646) | def taobao_logistics_companies_get(
    method taobao_logistics_orders_detail_get (line 14671) | def taobao_logistics_orders_detail_get(
    method taobao_logistics_orders_get (line 14722) | def taobao_logistics_orders_get(
    method taobao_logistics_partners_get (line 14773) | def taobao_logistics_partners_get(
    method taobao_logistics_trace_search (line 14804) | def taobao_logistics_trace_search(
    method taobao_logistics_address_search (line 14828) | def taobao_logistics_address_search(
    method taobao_logistics_address_remove (line 14847) | def taobao_logistics_address_remove(
    method taobao_logistics_address_modify (line 14866) | def taobao_logistics_address_modify(
    method taobao_logistics_address_add (line 14920) | def taobao_logistics_address_add(
    method taobao_logistics_online_send (line 14972) | def taobao_logistics_online_send(
    method taobao_logistics_online_cancel (line 15015) | def taobao_logistics_online_cancel(
    method taobao_logistics_online_confirm (line 15033) | def taobao_logistics_online_confirm(
    method taobao_logistics_offline_send (line 15064) | def taobao_logistics_offline_send(
    method taobao_logistics_dummy_send (line 15107) | def taobao_logistics_dummy_send(
    method taobao_delivery_template_get (line 15132) | def taobao_delivery_template_get(
    method taobao_delivery_templates_get (line 15155) | def taobao_delivery_templates_get(
    method taobao_delivery_template_delete (line 15173) | def taobao_delivery_template_delete(
    method taobao_delivery_template_add (line 15192) | def taobao_delivery_template_add(
    method taobao_delivery_template_update (line 15268) | def taobao_delivery_template_update(
    method taobao_logistics_order_create (line 15320) | def taobao_logistics_order_create(
    method taobao_logistics_consign_resend (line 15366) | def taobao_logistics_consign_resend(
    method taobao_logistics_consign_order_createandsend (line 15403) | def taobao_logistics_consign_order_createandsend(
    method taobao_logistics_address_reachable (line 15499) | def taobao_logistics_address_reachable(
    method taobao_logistics_order_shengxian_confirm (line 15531) | def taobao_logistics_order_shengxian_confirm(
    method taobao_wlb_stores_baseinfo_get (line 15570) | def taobao_wlb_stores_baseinfo_get(
    method taobao_logistics_address_reachablebatch_get (line 15588) | def taobao_logistics_address_reachablebatch_get(
    method taobao_logistics_consign_tc_confirm (line 15606) | def taobao_logistics_consign_tc_confirm(
    method taobao_wms_order_warehouse_route_get (line 15644) | def taobao_wms_order_warehouse_route_get(
    method taobao_wlb_order_jz_query (line 15661) | def taobao_wlb_order_jz_query(
    method taobao_wlb_order_jz_consign (line 15687) | def taobao_wlb_order_jz_consign(
    method cainiao_cboss_workplatform_workorder_task_notify (line 15723) | def cainiao_cboss_workplatform_workorder_task_notify(
    method cainiao_cboss_workplatform_workorder_process_notify (line 15742) | def cainiao_cboss_workplatform_workorder_process_notify(
    method cainiao_cboss_workplatform_workorder_create (line 15761) | def cainiao_cboss_workplatform_workorder_create(
    method cainiao_cboss_workplatform_operation_reply (line 15821) | def cainiao_cboss_workplatform_operation_reply(
    method cainiao_cboss_workplatform_biztype_queryall (line 15863) | def cainiao_cboss_workplatform_biztype_queryall(
    method cainiao_cboss_workplatform_biztype_querybyid (line 15884) | def cainiao_cboss_workplatform_biztype_querybyid(
    method cainiao_cboss_workplatform_logistics_iscainiaoorder (line 15902) | def cainiao_cboss_workplatform_logistics_iscainiaoorder(
    method cainiao_member_courier_cpresign (line 15919) | def cainiao_member_courier_cpresign(
    method taobao_nextone_logistics_sign_update (line 15937) | def taobao_nextone_logistics_sign_update(
    method taobao_nextone_logistics_warehouse_update (line 15958) | def taobao_nextone_logistics_warehouse_update(
    method alibaba_alink_message_history_action (line 15979) | def alibaba_alink_message_history_action(
    method taobao_wlb_import_threepl_resource_get (line 16000) | def taobao_wlb_import_threepl_resource_get(
    method taobao_wlb_import_threepl_offline_consign (line 16024) | def taobao_wlb_import_threepl_offline_consign(
    method cainiao_logistics_package_overview_get (line 16054) | def cainiao_logistics_package_overview_get(
    method cainiao_logistics_abnormal_get (line 16076) | def cainiao_logistics_abnormal_get(
    method cainiao_logistics_performance_get (line 16098) | def cainiao_logistics_performance_get(
    method taobao_logistics_express_modify_appoint (line 16117) | def taobao_logistics_express_modify_appoint(
    method taobao_rdc_aligenius_warehouse_reverse_update (line 16135) | def taobao_rdc_aligenius_warehouse_reverse_update(
    method taobao_rdc_aligenius_distribution_logistics_cancel (line 16152) | def taobao_rdc_aligenius_distribution_logistics_cancel(
    method cainiao_mdec_nooneshelf_order_save (line 16169) | def cainiao_mdec_nooneshelf_order_save(
    method cainiao_mdec_nooneshelf_baseinfo_save (line 16187) | def cainiao_mdec_nooneshelf_baseinfo_save(
    method cainiao_mdec_nooneshelf_inventory_save (line 16204) | def cainiao_mdec_nooneshelf_inventory_save(
    method taobao_rdc_aligenius_warehouse_resend_logistics_msg_post (line 16222) | def taobao_rdc_aligenius_warehouse_resend_logistics_msg_post(
    method taobao_rdc_aligenius_warehouse_resend_update (line 16240) | def taobao_rdc_aligenius_warehouse_resend_update(
    method alibaba_ele_fengniao_trade_update (line 16258) | def alibaba_ele_fengniao_trade_update(
    method alibaba_ele_fengniao_cancel_merchant (line 16276) | def alibaba_ele_fengniao_cancel_merchant(
    method alibaba_ele_fengniao_order_push (line 16295) | def alibaba_ele_fengniao_order_push(
    method alibaba_ele_fengniao_user_time_query (line 16314) | def alibaba_ele_fengniao_user_time_query(
    method alibaba_ele_fengniao_order_query (line 16331) | def alibaba_ele_fengniao_order_query(
    method alibaba_ele_fengniao_shippingorder_event (line 16348) | def alibaba_ele_fengniao_shippingorder_event(
    method alibaba_ele_fengniao_carrierdriver_location (line 16368) | def alibaba_ele_fengniao_carrierdriver_location(
    method alibaba_ele_fengniao_service_package_query (line 16388) | def alibaba_ele_fengniao_service_package_query(
    method alibaba_ele_fengniao_chainstore_ranges (line 16407) | def alibaba_ele_fengniao_chainstore_ranges(
    method alibaba_ele_fengniao_chainstore_contract_cancel (line 16431) | def alibaba_ele_fengniao_chainstore_contract_cancel(
    method alibaba_ele_fengniao_chainstore_contract_change (line 16450) | def alibaba_ele_fengniao_chainstore_contract_change(
    method alibaba_ele_fengniao_chainstore_update (line 16469) | def alibaba_ele_fengniao_chainstore_update(
    method alibaba_ele_fengniao_merchant_contract_cancel (line 16488) | def alibaba_ele_fengniao_merchant_contract_cancel(
    method taobao_rdc_aligenius_warehouse_reverse_event_update (line 16509) | def taobao_rdc_aligenius_warehouse_reverse_event_update(
    method taobao_rdc_aligenius_warehouse_reverse_uploading (line 16527) | def taobao_rdc_aligenius_warehouse_reverse_uploading(
  class TbDianPu (line 16546) | class TbDianPu(DingTalkBaseAPI):
    method taobao_shopcats_list_get (line 16551) | def taobao_shopcats_list_get(
    method taobao_sellercats_list_get (line 16570) | def taobao_sellercats_list_get(
    method taobao_sellercats_list_add (line 16584) | def taobao_sellercats_list_add(
    method taobao_sellercats_list_update (line 16612) | def taobao_sellercats_list_update(
    method taobao_shop_get (line 16640) | def taobao_shop_get(
    method taobao_shop_update (line 16663) | def taobao_shop_update(
    method taobao_shop_getbytitle (line 16688) | def taobao_shop_getbytitle(
    method alibaba_interact_sensor_clipbroad (line 16710) | def alibaba_interact_sensor_clipbroad(
    method alibaba_interact_windvane_call (line 16727) | def alibaba_interact_windvane_call(
    method alibaba_data_item_get (line 16746) | def alibaba_data_item_get(
    method alibaba_data_coupon_get (line 16765) | def alibaba_data_coupon_get(
    method alibaba_data_recommond_get (line 16784) | def alibaba_data_recommond_get(
    method alibaba_taobao_shop_cat_neo_get (line 16803) | def alibaba_taobao_shop_cat_neo_get(
    method taobao_store_followurl_get (line 16822) | def taobao_store_followurl_get(
    method taobao_shop_seller_get (line 16847) | def taobao_shop_seller_get(
  class TbFenXiao (line 16867) | class TbFenXiao(DingTalkBaseAPI):
    method taobao_fenxiao_orders_get (line 16872) | def taobao_fenxiao_orders_get(
    method taobao_fenxiao_product_add (line 16914) | def taobao_fenxiao_product_add(
    method taobao_fenxiao_product_update (line 17040) | def taobao_fenxiao_product_update(
    method taobao_fenxiao_productcats_get (line 17166) | def taobao_fenxiao_productcats_get(
    method taobao_fenxiao_products_get (line 17184) | def taobao_fenxiao_products_get(
    method taobao_fenxiao_distributors_get (line 17232) | def taobao_fenxiao_distributors_get(
    method taobao_fenxiao_cooperation_update (line 17251) | def taobao_fenxiao_cooperation_update(
    method taobao_fenxiao_grades_get (line 17278) | def taobao_fenxiao_grades_get(
    method taobao_fenxiao_discounts_get (line 17292) | def taobao_fenxiao_discounts_get(
    method taobao_fenxiao_order_confirm_paid (line 17313) | def taobao_fenxiao_order_confirm_paid(
    method taobao_fenxiao_distributor_items_get (line 17335) | def taobao_fenxiao_distributor_items_get(
    method taobao_fenxiao_cooperation_get (line 17368) | def taobao_fenxiao_cooperation_get(
    method taobao_fenxiao_login_user_get (line 17401) | def taobao_fenxiao_login_user_get(
    method taobao_fenxiao_product_sku_delete (line 17415) | def taobao_fenxiao_product_sku_delete(
    method taobao_fenxiao_product_sku_add (line 17436) | def taobao_fenxiao_product_sku_add(
    method taobao_fenxiao_product_sku_update (line 17472) | def taobao_fenxiao_product_sku_update(
    method taobao_fenxiao_product_skus_get (line 17508) | def taobao_fenxiao_product_skus_get(
    method taobao_fenxiao_product_image_upload (line 17526) | def taobao_fenxiao_product_image_upload(
    method taobao_fenxiao_product_image_delete (line 17556) | def taobao_fenxiao_product_image_delete(
    method taobao_fenxiao_order_remark_update (line 17580) | def taobao_fenxiao_order_remark_update(
    method taobao_fenxiao_trademonitor_get (line 17605) | def taobao_fenxiao_trademonitor_get(
    method taobao_fenxiao_product_gradeprice_update (line 17641) | def taobao_fenxiao_product_gradeprice_update(
    method taobao_fenxiao_product_map_add (line 17675) | def taobao_fenxiao_product_map_add(
    method taobao_scitem_outercode_get (line 17706) | def taobao_scitem_outercode_get(
    method taobao_scitem_get (line 17724) | def taobao_scitem_get(
    method taobao_scitem_query (line 17742) | def taobao_scitem_query(
    method taobao_scitem_update (line 17777) | def taobao_scitem_update(
    method taobao_scitem_add (line 17864) | def taobao_scitem_add(
    method taobao_scitem_map_delete (line 17945) | def taobao_scitem_map_delete(
    method taobao_scitem_map_query (line 17967) | def taobao_scitem_map_query(
    method taobao_scitem_map_add (line 17989) | def taobao_scitem_map_add(
    method taobao_inventory_store_query (line 18020) | def taobao_inventory_store_query(
    method taobao_inventory_adjust_trade (line 18039) | def taobao_inventory_adjust_trade(
    method taobao_inventory_adjust_external (line 18066) | def taobao_inventory_adjust_external(
    method taobao_inventory_store_manage (line 18105) | def taobao_inventory_store_manage(
    method taobao_inventory_initial (line 18151) | def taobao_inventory_initial(
    method taobao_inventory_query (line 18173) | def taobao_inventory_query(
    method taobao_fenxiao_requisitions_get (line 18200) | def taobao_fenxiao_requisitions_get(
    method taobao_fenxiao_cooperation_productcat_add (line 18229) | def taobao_fenxiao_cooperation_productcat_add(
    method taobao_fenxiao_cooperation_audit (line 18255) | def taobao_fenxiao_cooperation_audit(
    method taobao_fenxiao_cooperation_terminate (line 18287) | def taobao_fenxiao_cooperation_terminate(
    method taobao_fenxiao_product_gradeprice_get (line 18314) | def taobao_fenxiao_product_gradeprice_get(
    method taobao_fenxiao_grade_add (line 18337) | def taobao_fenxiao_grade_add(
    method taobao_fenxiao_productcat_delete (line 18356) | def taobao_fenxiao_productcat_delete(
    method taobao_fenxiao_productcat_update (line 18374) | def taobao_fenxiao_productcat_update(
    method taobao_fenxiao_productcat_add (line 18407) | def taobao_fenxiao_productcat_add(
    method taobao_inventory_initial_item (line 18436) | def taobao_inventory_initial_item(
    method taobao_fenxiao_refund_get (line 18458) | def taobao_fenxiao_refund_get(
    method taobao_fenxiao_distributor_products_get (line 18480) | def taobao_fenxiao_distributor_products_get(
    method taobao_fenxiao_dealer_requisitionorder_close (line 18534) | def taobao_fenxiao_dealer_requisitionorder_close(
    method taobao_fenxiao_dealer_requisitionorder_agree (line 18559) | def taobao_fenxiao_dealer_requisitionorder_agree(
    method taobao_fenxiao_dealer_requisitionorder_get (line 18578) | def taobao_fenxiao_dealer_requisitionorder_get(
    method taobao_fenxiao_dealer_requisitionorder_query (line 18614) | def taobao_fenxiao_dealer_requisitionorder_query(
    method taobao_fenxiao_dealer_requisitionorder_remark_update (line 18636) | def taobao_fenxiao_dealer_requisitionorder_remark_update(
    method taobao_fenxiao_dealer_requisitionorder_create (line 18661) | def taobao_fenxiao_dealer_requisitionorder_create(
    method taobao_fenxiao_refund_query (line 18709) | def taobao_fenxiao_refund_query(
    method taobao_fenxiao_product_quantity_update (line 18739) | def taobao_fenxiao_product_quantity_update(
    method tmall_inventory_query_forstore (line 18767) | def tmall_inventory_query_forstore(
    method taobao_inventory_warehouse_query (line 18785) | def taobao_inventory_warehouse_query(
    method taobao_inventory_warehouse_get (line 18805) | def taobao_inventory_warehouse_get(
    method taobao_inventory_warehouse_manage (line 18822) | def taobao_inventory_warehouse_manage(
    method taobao_region_warehouse_manage (line 18839) | def taobao_region_warehouse_manage(
    method taobao_region_sale_query (line 18859) | def taobao_region_sale_query(
    method taobao_region_warehouse_query (line 18882) | def taobao_region_warehouse_query(
    method taobao_region_price_manage (line 18899) | def taobao_region_price_manage(
    method taobao_region_price_query (line 18926) | def taobao_region_price_query(
    method taobao_region_price_cancle (line 18949) | def taobao_region_price_cancle(
    method taobao_fenxiao_product_import_from_auction (line 18969) | def taobao_fenxiao_product_import_from_auction(
    method taobao_fenxiao_product_to_channel_import (line 18993) | def taobao_fenxiao_product_to_channel_import(
    method tmall_channel_products_get (line 19014) | def tmall_channel_products_get(
    method taobao_fenxiao_trade_prepay_offline_add (line 19039) | def taobao_fenxiao_trade_prepay_offline_add(
    method taobao_fenxiao_trade_prepay_offline_reduce (line 19058) | def taobao_fenxiao_trade_prepay_offline_reduce(
  class TbWangWang (line 19077) | class TbWangWang(DingTalkBaseAPI):
    method taobao_wangwang_eservice_chatpeers_get (line 19082) | def taobao_wangwang_eservice_chatpeers_get(
    method taobao_wangwang_abstract_logquery (line 19095) | def taobao_wangwang_abstract_logquery(
    method taobao_wangwang_abstract_getwordlist (line 19130) | def taobao_wangwang_abstract_getwordlist(
    method taobao_wangwang_abstract_deleteword (line 19148) | def taobao_wangwang_abstract_deleteword(
    method taobao_wangwang_abstract_addword (line 19169) | def taobao_wangwang_abstract_addword(
    method taobao_wangwang_abstract_initialize (line 19190) | def taobao_wangwang_abstract_initialize(
    method taobao_wangwang_clientid_bind (line 19208) | def taobao_wangwang_clientid_bind(
    method taobao_wangwang_clientid_unbind (line 19229) | def taobao_wangwang_clientid_unbind(
    method taobao_qianniu_kefueval_get (line 19249) | def taobao_qianniu_kefueval_get(
    method taobao_wangwang_eservice_chatrelation_get (line 19273) | def taobao_wangwang_eservice_chatrelation_get(
    method taobao_wangwang_eservice_abs_word_get (line 19294) | def taobao_wangwang_eservice_abs_word_get(
    method taobao_wangwang_eservice_abs_word_del (line 19308) | def taobao_wangwang_eservice_abs_word_del(
    method taobao_wangwang_eservice_abs_word_add (line 19325) | def taobao_wangwang_eservice_abs_word_add(
    method taobao_wangwang_eservice_abs_chatlog_get (line 19343) | def taobao_wangwang_eservice_abs_chatlog_get(
  class TbTaoBaoKe (line 19362) | class TbTaoBaoKe(DingTalkBaseAPI):
    method taobao_tbk_item_get (line 19367) | def taobao_tbk_item_get(
    method taobao_tbk_item_recommend_get (line 19423) | def taobao_tbk_item_recommend_get(
    method taobao_tbk_item_info_get (line 19450) | def taobao_tbk_item_info_get(
    method taobao_tbk_shop_get (line 19475) | def taobao_tbk_shop_get(
    method taobao_tbk_shop_recommend_get (line 19534) | def taobao_tbk_shop_recommend_get(
    method taobao_tbk_uatm_favorites_item_get (line 19561) | def taobao_tbk_uatm_favorites_item_get(
    method taobao_tbk_uatm_favorites_get (line 19597) | def taobao_tbk_uatm_favorites_get(
    method taobao_tbk_ju_tqg_get (line 19624) | def taobao_tbk_ju_tqg_get(
    method taobao_tbk_item_click_extract (line 19657) | def taobao_tbk_item_click_extract(
    method taobao_tbk_item_guess_like (line 19675) | def taobao_tbk_item_guess_like(
    method taobao_tbk_dg_item_coupon_get (line 19733) | def taobao_tbk_dg_item_coupon_get(
    method taobao_tbk_coupon_get (line 19765) | def taobao_tbk_coupon_get(
    method taobao_tbk_tpwd_create (line 19790) | def taobao_tbk_tpwd_create(
    method taobao_tbk_dg_newuser_order_get (line 19821) | def taobao_tbk_dg_newuser_order_get(
    method taobao_tbk_sc_newuser_order_get (line 19855) | def taobao_tbk_sc_newuser_order_get(
    method taobao_tbk_dg_optimus_material (line 19892) | def taobao_tbk_dg_optimus_material(
    method taobao_tbk_dg_material_optional (line 19937) | def taobao_tbk_dg_material_optional(
    method taobao_tbk_dg_newuser_order_sum (line 20038) | def taobao_tbk_dg_newuser_order_sum(
    method taobao_tbk_sc_newuser_order_sum (line 20072) | def taobao_tbk_sc_newuser_order_sum(
    method taobao_tbk_sc_optimus_material (line 20106) | def taobao_tbk_sc_optimus_material(
    method taobao_tbk_activitylink_get (line 20154) | def taobao_tbk_activitylink_get(
    method taobao_tbk_sc_activitylink_toolget (line 20187) | def taobao_tbk_sc_activitylink_toolget(
    method taobao_tbk_dg_punish_order_get (line 20220) | def taobao_tbk_dg_punish_order_get(
    method taobao_tbk_content_get (line 20238) | def taobao_tbk_content_get(
    method taobao_tbk_content_effect_get (line 20277) | def taobao_tbk_content_effect_get(
    method taobao_tbk_dg_vegas_tlj_create (line 20295) | def taobao_tbk_dg_vegas_tlj_create(
    method taobao_tbk_dg_vegas_tlj_instance_report (line 20349) | def taobao_tbk_dg_vegas_tlj_instance_report(
  class TbGongJu (line 20368) | class TbGongJu(DingTalkBaseAPI):
    method taobao_time_get (line 20373) | def taobao_time_get(
    method taobao_kfc_keyword_search (line 20386) | def taobao_kfc_keyword_search(
    method taobao_topats_result_get (line 20411) | def taobao_topats_result_get(
    method taobao_topats_task_delete (line 20430) | def taobao_topats_task_delete(
    method taobao_appip_get (line 20451) | def taobao_appip_get(
    method taobao_openuid_change (line 20464) | def taobao_openuid_change(
    method taobao_top_auth_token_refresh (line 20490) | def taobao_top_auth_token_refresh(
    method taobao_top_auth_token_create (line 20509) | def taobao_top_auth_token_create(
    method taobao_httpdns_get (line 20531) | def taobao_httpdns_get(
    method taobao_top_ipout_get (line 20544) | def taobao_top_ipout_get(
    method taobao_top_secret_get (line 20557) | def taobao_top_secret_get(
    method taobao_top_secret_register (line 20581) | def taobao_top_secret_register(
    method taobao_top_sdk_feedback_upload (line 20599) | def taobao_top_sdk_feedback_upload(
    method taobao_streetest_session_get (line 20621) | def taobao_streetest_session_get(
    method taobao_qimen_trade_users_get (line 20635) | def taobao_qimen_trade_users_get(
    method taobao_qimen_trade_user_delete (line 20656) | def taobao_qimen_trade_user_delete(
    method taobao_qimen_trade_user_add (line 20669) | def taobao_qimen_trade_user_add(
    method taobao_qimen_events_produce (line 20686) | def taobao_qimen_events_produce(
    method taobao_qimen_event_produce (line 20704) | def taobao_qimen_event_produce(
    method taobao_tmc_auth_get (line 20738) | def taobao_tmc_auth_get(
    method taobao_rdc_aligenius_refunds_check (line 20756) | def taobao_rdc_aligenius_refunds_check(
    method taobao_rdc_aligenius_autorefunds_query (line 20774) | def taobao_rdc_aligenius_autorefunds_query(
    method alibaba_interact_sensor_ui (line 20801) | def alibaba_interact_sensor_ui(
    method tmall_marketing_face_skindetect (line 20820) | def tmall_marketing_face_skindetect(
    method alibaba_retail_shorturl_get (line 20848) | def alibaba_retail_shorturl_get(
    method alibaba_retail_device_trade_ship (line 20868) | def alibaba_retail_device_trade_ship(
    method taobao_files_get (line 20898) | def taobao_files_get(
    method taobao_openlink_session_get (line 20923) | def taobao_openlink_session_get(
    method taobao_cloudbridge_caseinvest_execute (line 20941) | def taobao_cloudbridge_caseinvest_execute(
    method taobao_openuid_get (line 20962) | def taobao_openuid_get(
    method taobao_openuid_get_bytrade (line 20975) | def taobao_openuid_get_bytrade(
    method taobao_openuid_get_bymixnick (line 20994) | def taobao_openuid_get_bymixnick(
    method tmall_marketing_face_faceinference (line 21012) | def tmall_marketing_face_faceinference(
    method alibaba_cuntao_interact_requisition_update (line 21037) | def alibaba_cuntao_interact_requisition_update(
    method alibaba_cuntao_interact_requisition_get (line 21058) | def alibaba_cuntao_interact_requisition_get(
    method alibaba_interact_supplier_award_resource_get_cuntao (line 21084) | def alibaba_interact_supplier_award_resource_get_cuntao(
  class TbWuLiuBao (line 21112) | class TbWuLiuBao(DingTalkBaseAPI):
    method taobao_wlb_order_consign (line 21117) | def taobao_wlb_order_consign(
    method taobao_wlb_notify_message_confirm (line 21136) | def taobao_wlb_notify_message_confirm(
    method taobao_wlb_notify_message_page_get (line 21155) | def taobao_wlb_notify_message_page_get(
    method taobao_wlb_tmsorder_query (line 21188) | def taobao_wlb_tmsorder_query(
    method taobao_wlb_item_map_get (line 21212) | def taobao_wlb_item_map_get(
    method taobao_wlb_item_combination_get (line 21229) | def taobao_wlb_item_combination_get(
    method taobao_wlb_inventorylog_query (line 21247) | def taobao_wlb_inventorylog_query(
    method taobao_wlb_item_update (line 21289) | def taobao_wlb_item_update(
    method taobao_wlb_subscription_query (line 21359) | def taobao_wlb_subscription_query(
    method taobao_wlb_order_page_get (line 21383) | def taobao_wlb_order_page_get(
    method taobao_wlb_orderstatus_get (line 21421) | def taobao_wlb_orderstatus_get(
    method taobao_wlb_order_cancel (line 21440) | def taobao_wlb_order_cancel(
    method taobao_wlb_item_get (line 21457) | def taobao_wlb_item_get(
    method taobao_wlb_tradeorder_get (line 21476) | def taobao_wlb_tradeorder_get(
    method taobao_wlb_inventory_detail_get (line 21501) | def taobao_wlb_inventory_detail_get(
    method taobao_wlb_order_create (line 21525) | def taobao_wlb_order_create(
    method taobao_wlb_item_query (line 21630) | def taobao_wlb_item_query(
    method taobao_wlb_wlborder_get (line 21672) | def taobao_wlb_wlborder_get(
    method taobao_wlb_item_add (line 21690) | def taobao_wlb_item_add(
    method taobao_wlb_out_inventory_change_notify (line 21769) | def taobao_wlb_out_inventory_change_notify(
    method taobao_wlb_item_batch_query (line 21812) | def taobao_wlb_item_batch_query(
    method taobao_inventory_ipc_inventorydetail_get (line 21839) | def taobao_inventory_ipc_inventorydetail_get(
    method taobao_wlb_orderdetail_date_get (line 21875) | def taobao_wlb_orderdetail_date_get(
    method taobao_wlb_waybill_shengxian_get (line 21902) | def taobao_wlb_waybill_shengxian_get(
    method taobao_wlb_order_jzpartner_query (line 21938) | def taobao_wlb_order_jzpartner_query(
    method taobao_wlb_order_jzwithins_consign (line 21959) | def taobao_wlb_order_jzwithins_consign(
    method taobao_wlb_wms_inventory_lack_upload (line 21986) | def taobao_wlb_wms_inventory_lack_upload(
    method taobao_wlb_wms_inventory_count (line 22003) | def taobao_wlb_wms_inventory_count(
    method cainiao_merchant_inventory_adjust (line 22022) | def cainiao_merchant_inventory_adjust(
    method taobao_uop_tob_order_create (line 22046) | def taobao_uop_tob_order_create(
    method cainiao_bms_order_consign_confirm (line 22063) | def cainiao_bms_order_consign_confirm(
  class TbZhiTongChe (line 22082) | class TbZhiTongChe(DingTalkBaseAPI):
    method taobao_simba_keywords_recommend_get (line 22087) | def taobao_simba_keywords_recommend_get(
    method taobao_simba_customers_authorized_get (line 22123) | def taobao_simba_customers_authorized_get(
    method taobao_simba_tools_items_top_get (line 22136) | def taobao_simba_tools_items_top_get(
    method taobao_simba_creatives_get (line 22160) | def taobao_simba_creatives_get(
    method taobao_simba_creatives_record_get (line 22185) | def taobao_simba_creatives_record_get(
    method taobao_simba_creative_update (line 22209) | def taobao_simba_creative_update(
    method taobao_simba_creative_delete (line 22243) | def taobao_simba_creative_delete(
    method taobao_simba_creative_add (line 22265) | def taobao_simba_creative_add(
    method taobao_simba_adgroups_item_exist (line 22293) | def taobao_simba_adgroups_item_exist(
    method taobao_simba_adgroup_update (line 22321) | def taobao_simba_adgroup_update(
    method taobao_simba_adgroup_delete (line 22355) | def taobao_simba_adgroup_delete(
    method taobao_simba_adgroup_add (line 22376) | def taobao_simba_adgroup_add(
    method taobao_simba_campaign_platform_update (line 22409) | def taobao_simba_campaign_platform_update(
    method taobao_simba_campaign_platform_get (line 22442) | def taobao_simba_campaign_platform_get(
    method taobao_simba_campaign_channeloptions_get (line 22464) | def taobao_simba_campaign_channeloptions_get(
    method taobao_simba_campaign_areaoptions_get (line 22480) | def taobao_simba_campaign_areaoptions_get(
    method taobao_simba_campaign_schedule_update (line 22493) | def taobao_simba_campaign_schedule_update(
    method taobao_simba_campaign_schedule_get (line 22517) | def taobao_simba_campaign_schedule_get(
    method taobao_simba_campaign_budget_update (line 22538) | def taobao_simba_campaign_budget_update(
    method taobao_simba_campaign_budget_get (line 22565) | def taobao_simba_campaign_budget_get(
    method taobao_simba_campaign_area_update (line 22586) | def taobao_simba_campaign_area_update(
    method taobao_simba_account_balance_get (line 22610) | def taobao_simba_account_balance_get(
    method taobao_simba_keywords_delete (line 22628) | def taobao_simba_keywords_delete(
    method taobao_simba_campaign_area_get (line 22652) | def taobao_simba_campaign_area_get(
    method taobao_simba_campaign_update (line 22673) | def taobao_simba_campaign_update(
    method taobao_simba_campaigns_get (line 22701) | def taobao_simba_campaigns_get(
    method taobao_simba_campaign_add (line 22723) | def taobao_simba_campaign_add(
    method taobao_simba_keywordids_deleted_get (line 22747) | def taobao_simba_keywordids_deleted_get(
    method taobao_simba_keywordids_changed_get (line 22774) | def taobao_simba_keywordids_changed_get(
    method taobao_simba_adgroupids_deleted_get (line 22801) | def taobao_simba_adgroupids_deleted_get(
    method taobao_simba_adgroupids_changed_get (line 22828) | def taobao_simba_adgroupids_changed_get(
    method taobao_simba_creativeids_deleted_get (line 22855) | def taobao_simba_creativeids_deleted_get(
    method taobao_simba_creativeids_changed_get (line 22882) | def taobao_simba_creativeids_changed_get(
    method taobao_simba_login_authsign_get (line 22911) | def taobao_simba_login_authsign_get(
    method taobao_simba_rpt_custbase_get (line 22929) | def taobao_simba_rpt_custbase_get(
    method taobao_simba_rpt_adgroupkeywordeffect_get (line 22965) | def taobao_simba_rpt_adgroupkeywordeffect_get(
    method taobao_simba_rpt_adgroupkeywordbase_get (line 23010) | def taobao_simba_rpt_adgroupkeywordbase_get(
    method taobao_simba_rpt_custeffect_get (line 23055) | def taobao_simba_rpt_custeffect_get(
    method taobao_simba_rpt_campadgroupeffect_get (line 23091) | def taobao_simba_rpt_campadgroupeffect_get(
    method taobao_simba_rpt_adgroupeffect_get (line 23133) | def taobao_simba_rpt_adgroupeffect_get(
    method taobao_simba_rpt_campadgroupbase_get (line 23178) | def taobao_simba_rpt_campadgroupbase_get(
    method taobao_simba_rpt_adgroupbase_get (line 23220) | def taobao_simba_rpt_adgroupbase_get(
    method taobao_simba_rpt_campaigneffect_get (line 23265) | def taobao_simba_rpt_campaigneffect_get(
    method taobao_simba_rpt_adgroupcreativeeffect_get (line 23307) | def taobao_simba_rpt_adgroupcreativeeffect_get(
    method taobao_simba_rpt_campaignbase_get (line 23352) | def taobao_simba_rpt_campaignbase_get(
    method taobao_simba_rpt_adgroupcreativebase_get (line 23394) | def taobao_simba_rpt_adgroupcreativebase_get(
    method taobao_topats_simba_campkeywordeffect_get (line 23439) | def taobao_topats_simba_campkeywordeffect_get(
    method taobao_topats_simba_campkeywordbase_get (line 23468) | def taobao_topats_simba_campkeywordbase_get(
    method taobao_simba_keywords_qscore_get (line 23497) | def taobao_simba_keywords_qscore_get(
    method taobao_simba_adgroups_changed_get (line 23519) | def taobao_simba_adgroups_changed_get(
    method taobao_simba_creatives_changed_get (line 23546) | def taobao_simba_creatives_changed_get(
    method taobao_simba_keywords_changed_get (line 23573) | def taobao_simba_keywords_changed_get(
    method taobao_simba_adgroupsbycampaignid_get (line 23600) | def taobao_simba_adgroupsbycampaignid_get(
    method taobao_simba_adgroupsbyadgroupids_get (line 23627) | def taobao_simba_adgroupsbyadgroupids_get(
    method taobao_simba_adgroup_onlineitemsvon_get (line 23654) | def taobao_simba_adgroup_onlineitemsvon_get(
    method taobao_simba_keywordsvon_add (line 23687) | def taobao_simba_keywordsvon_add(
    method taobao_simba_keywordsbyadgroupid_get (line 23711) | def taobao_simba_keywordsbyadgroupid_get(
    method taobao_simba_keywordsbykeywordids_get (line 23732) | def taobao_simba_keywordsbykeywordids_get(
    method taobao_simba_keywordscat_qscore_get (line 23753) | def taobao_simba_keywordscat_qscore_get(
    method taobao_simba_keywords_pricevon_set (line 23775) | def taobao_simba_keywords_pricevon_set(
    method taobao_simba_insight_catsforecastnew_get (line 23797) | def taobao_simba_insight_catsforecastnew_get(
    method taobao_simba_insight_relatedwords_get (line 23816) | def taobao_simba_insight_relatedwords_get(
    method taobao_simba_insight_catstopwordnew_get (line 23838) | def taobao_simba_insight_catstopwordnew_get(
    method taobao_simba_insight_catsworddata_get (line 23869) | def taobao_simba_insight_catsworddata_get(
    method taobao_simba_insight_wordsdata_get (line 23897) | def taobao_simba_insight_wordsdata_get(
    method taobao_simba_insight_wordssubdata_get (line 23922) | def taobao_simba_insight_wordssubdata_get(
    method taobao_simba_insight_wordsareadata_get (line 23947) | def taobao_simba_insight_wordsareadata_get(
    method taobao_simba_insight_wordspricedata_get (line 23972) | def taobao_simba_insight_wordspricedata_get(
    method taobao_simba_insight_catsinfo_get (line 23997) | def taobao_simba_insight_catsinfo_get(
    method taobao_simba_insight_catsdata_get (line 24019) | def taobao_simba_insight_catsdata_get(
    method taobao_simba_rpt_targetingtageffect_get (line 24044) | def taobao_simba_rpt_targetingtageffect_get(
    method taobao_simba_rpt_targetingtagbase_get (line 24080) | def taobao_simba_rpt_targetingtagbase_get(
    method taobao_simba_rtrpt_creative_get (line 24117) | def taobao_simba_rtrpt_creative_get(
    method taobao_simba_rtrpt_campaign_get (line 24144) | def taobao_simba_rtrpt_campaign_get(
    method taobao_simba_rtrpt_bidword_get (line 24165) | def taobao_simba_rtrpt_bidword_get(
    method taobao_simba_rtrpt_adgroup_get (line 24193) | def taobao_simba_rtrpt_adgroup_get(
    method taobao_simba_rtrpt_cust_get (line 24223) | def taobao_simba_rtrpt_cust_get(
    method taobao_simba_keywords_qscore_split_get (line 24244) | def taobao_simba_keywords_qscore_split_get(
    method taobao_simba_adgroup_mobilediscount_delete (line 24268) | def taobao_simba_adgroup_mobilediscount_delete(
    method taobao_simba_adgroup_mobilediscount_update (line 24288) | def taobao_simba_adgroup_mobilediscount_update(
    method taobao_simba_keywords_realtime_ranking_batch_get (line 24311) | def taobao_simba_keywords_realtime_ranking_batch_get(
    method taobao_simba_serchcrowd_get (line 24335) | def taobao_simba_serchcrowd_get(
    method taobao_simba_serchcrowd_batch_delete (line 24356) | def taobao_simba_serchcrowd_batch_delete(
    method taobao_simba_searchtagtemplate_get (line 24380) | def taobao_simba_searchtagtemplate_get(
    method taobao_simba_serchcrowd_state_batch_update (line 24402) | def taobao_simba_serchcrowd_state_batch_update(
    method taobao_simba_searchcrowd_batch_add (line 24429) | def taobao_simba_searchcrowd_batch_add(
    method taobao_simba_serchcrowd_price_batch_update (line 24454) | def taobao_simba_serchcrowd_price_batch_update(
    method taobao_simba_rtrpt_targetingtag_get (line 24485) | def taobao_simba_rtrpt_targetingtag_get(
    method taobao_simba_rpt_targetingtag_get (line 24516) | def taobao_simba_rpt_targetingtag_get(
    method taobao_simba_customers_sid_get (line 24550) | def taobao_simba_customers_sid_get(
    method taobao_simba_keyword_findbyids (line 24563) | def taobao_simba_keyword_findbyids(
    method taobao_simba_keyword_add (line 24581) | def taobao_simba_keyword_add(
    method taobao_simba_keyword_update (line 24602) | def taobao_simba_keyword_update(
    method taobao_simba_keyword_findbyadgroupid (line 24619) | def taobao_simba_keyword_findbyadgroupid(
    method taobao_simba_salestar_campaign_budget_update (line 24637) | def taobao_simba_salestar_campaign_budget_update(
    method taobao_simba_salestar_adgroup_update (line 24659) | def taobao_simba_salestar_adgroup_update(
    method taobao_simba_salestar_keywords_qscore_split_get (line 24681) | def taobao_simba_salestar_keywords_qscore_split_get(
    method taobao_simba_salestar_adgroup_delete (line 24705) | def taobao_simba_salestar_adgroup_delete(
    method taobao_simba_salestar_adgroup_findbycampid (line 24726) | def taobao_simba_salestar_adgroup_findbycampid(
    method taobao_simba_salestar_creatives_get (line 24751) | def taobao_simba_salestar_creatives_get(
    method taobao_simba_salestar_creative_add (line 24776) | def taobao_simba_salestar_creative_add(
    method taobao_simba_salestar_creative_update (line 24804) | def taobao_simba_salestar_creative_update(
    method taobao_simba_salestar_creative_delete (line 24835) | def taobao_simba_salestar_creative_delete(
    method taobao_simba_salestar_adgroup_add (line 24854) | def taobao_simba_salestar_adgroup_add(
    method taobao_simba_salestar_keywords_delete (line 24882) | def taobao_simba_salestar_keywords_delete(
    method taobao_simba_salestar_keywords_recommend_get (line 24900) | def taobao_simba_salestar_keywords_recommend_get(
  class TbJiPiao (line 24923) | class TbJiPiao(DingTalkBaseAPI):
    method taobao_alitrip_flightchange_add (line 24928) | def taobao_alitrip_flightchange_add(
    method taobao_alitrip_flightchange_get (line 24948) | def taobao_alitrip_flightchange_get(
    method taobao_alitrip_ie_agent_shopping_push (line 24967) | def taobao_alitrip_ie_agent_shopping_push(
    method alitrip_tripvp_agent_order_issue (line 24985) | def alitrip_tripvp_agent_order_issue(
    method alitrip_tripvp_agent_order_get (line 25006) | def alitrip_tripvp_agent_order_get(
    method taobao_alitrip_totoro_auxproduct_delete (line 25027) | def taobao_alitrip_totoro_auxproduct_delete(
    method taobao_alitrip_totoro_auxproduct_push (line 25045) | def taobao_alitrip_totoro_auxproduct_push(
    method taobao_alitrip_ie_agent_refund_new_fillconfirmfee (line 25063) | def taobao_alitrip_ie_agent_refund_new_fillconfirmfee(
  class TbONSXiaoXiFuWu (line 25082) | class TbONSXiaoXiFuWu(DingTalkBaseAPI):
    method taobao_jushita_jms_user_get (line 25087) | def taobao_jushita_jms_user_get(
    method taobao_jushita_jms_user_add (line 25106) | def taobao_jushita_jms_user_add(
    method taobao_jushita_jms_user_delete (line 25124) | def taobao_jushita_jms_user_delete(
    method taobao_jushita_jms_group_get (line 25143) | def taobao_jushita_jms_group_get(
    method taobao_jushita_jms_group_delete (line 25167) | def taobao_jushita_jms_group_delete(
    method taobao_jushita_jms_topics_get (line 25191) | def taobao_jushita_jms_topics_get(
  class TbYingXiao (line 25209) | class TbYingXiao(DingTalkBaseAPI):
    method taobao_promotion_coupon_send (line 25214) | def taobao_promotion_coupon_send(
    method taobao_promotion_activity_get (line 25235) | def taobao_promotion_activity_get(
    method taobao_promotion_coupon_add (line 25254) | def taobao_promotion_coupon_add(
    method taobao_promotion_coupons_get (line 25282) | def taobao_promotion_coupons_get(
    method taobao_promotion_meal_get (line 25312) | def taobao_promotion_meal_get(
    method taobao_ump_mbb_getbyid (line 25334) | def taobao_ump_mbb_getbyid(
    method taobao_ump_mbbs_get (line 25353) | def taobao_ump_mbbs_get(
    method taobao_ump_tool_get (line 25372) | def taobao_ump_tool_get(
    method taobao_ump_tools_get (line 25391) | def taobao_ump_tools_get(
    method taobao_ump_tool_add (line 25409) | def taobao_ump_tool_add(
    method taobao_ump_tool_delete (line 25428) | def taobao_ump_tool_delete(
    method taobao_ump_activity_add (line 25449) | def taobao_ump_activity_add(
    method taobao_ump_activity_update (line 25471) | def taobao_ump_activity_update(
    method taobao_ump_activity_delete (line 25493) | def taobao_ump_activity_delete(
    method taobao_ump_activity_get (line 25512) | def taobao_ump_activity_get(
    method taobao_ump_activities_get (line 25530) | def taobao_ump_activities_get(
    method taobao_ump_detail_get (line 25553) | def taobao_ump_detail_get(
    method taobao_ump_details_get (line 25571) | def taobao_ump_details_get(
    method taobao_ump_detail_add (line 25595) | def taobao_ump_detail_add(
    method taobao_ump_detail_update (line 25617) | def taobao_ump_detail_update(
    method taobao_ump_detail_delete (line 25639) | def taobao_ump_detail_delete(
    method taobao_ump_range_add (line 25657) | def taobao_ump_range_add(
    method taobao_ump_range_delete (line 25682) | def taobao_ump_range_delete(
    method taobao_ump_range_get (line 25707) | def taobao_ump_range_get(
    method taobao_ump_mbb_getbycode (line 25726) | def taobao_ump_mbb_getbycode(
    method taobao_promotion_limitdiscount_detail_get (line 25745) | def taobao_promotion_limitdiscount_detail_get(
    method taobao_promotion_limitdiscount_get (line 25764) | def taobao_promotion_limitdiscount_get(
    method taobao_marketing_promotion_kfc (line 25794) | def taobao_marketing_promotion_kfc(
    method taobao_ump_mbbs_list_get (line 25816) | def taobao_ump_mbbs_list_get(
    method taobao_ump_activities_list_get (line 25835) | def taobao_ump_activities_list_get(
    method taobao_ump_detail_list_add (line 25854) | def taobao_ump_detail_list_add(
    method taobao_promotion_coupon_buyer_search (line 25876) | def taobao_promotion_coupon_buyer_search(
    method taobao_promotionmisc_tool_check (line 25905) | def taobao_promotionmisc_tool_check(
    method tmall_promotag_tag_apply (line 25926) | def tmall_promotag_tag_apply(
    method tmall_promotag_tag_find (line 25954) | def tmall_promotag_tag_find(
    method tmall_promotag_taguser_judge (line 25982) | def tmall_promotag_taguser_judge(
    method tmall_promotag_taguser_remove (line 26003) | def tmall_promotag_taguser_remove(
    method tmall_promotag_taguser_save (line 26025) | def tmall_promotag_taguser_save(
    method tmall_promotag_tag_removetag (line 26047) | def tmall_promotag_tag_removetag(
    method taobao_promotionmisc_item_activity_update (line 26066) | def taobao_promotionmisc_item_activity_update(
    method taobao_promotionmisc_mjs_activity_add (line 26115) | def taobao_promotionmisc_mjs_activity_add(
    method taobao_promotionmisc_mjs_activity_get (line 26205) | def taobao_promotionmisc_mjs_activity_get(
    method taobao_promotionmisc_activity_range_add (line 26223) | def taobao_promotionmisc_activity_range_add(
    method taobao_promotionmisc_activity_range_list_get (line 26245) | def taobao_promotionmisc_activity_range_list_get(
    method taobao_promotionmisc_activity_range_remove (line 26263) | def taobao_promotionmisc_activity_range_remove(
    method taobao_promotionmisc_activity_range_all_remove (line 26284) | def taobao_promotionmisc_activity_range_all_remove(
    method taobao_promotionmisc_mjs_activity_list_get (line 26302) | def taobao_promotionmisc_mjs_activity_list_get(
    method taobao_promotionmisc_mjs_activity_update (line 26326) | def taobao_promotionmisc_mjs_activity_update(
    method taobao_promotionmisc_mjs_activity_delete (line 26417) | def taobao_promotionmisc_mjs_activity_delete(
    method taobao_promotionmisc_item_activity_add (line 26435) | def taobao_promotionmisc_item_activity_add(
    method taobao_promotionmisc_item_activity_get (line 26480) | def taobao_promotionmisc_item_activity_get(
    method taobao_promotionmisc_item_activity_list_get (line 26498) | def taobao_promotionmisc_item_activity_list_get(
    method taobao_promotionmisc_item_activity_delete (line 26518) | def taobao_promotionmisc_item_activity_delete(
    method taobao_ump_shoutaotag_add (line 26536) | def taobao_ump_shoutaotag_add(
    method tmall_promotion_tip_campaign_remove (line 26562) | def tmall_promotion_tip_campaign_remove(
    method tmall_promotion_tip_item_remove (line 26583) | def tmall_promotion_tip_item_remove(
    method tmall_promotion_tip_item_adds (line 26607) | def tmall_promotion_tip_item_adds(
    method tmall_promotion_tip_item_modify (line 26627) | def tmall_promotion_tip_item_modify(
    method tmall_promotion_tip_campaign_modify (line 26648) | def tmall_promotion_tip_campaign_modify(
    method tmall_promotion_tip_campaign_create (line 26669) | def tmall_promotion_tip_campaign_create(
    method tmall_promotion_tip_item_modifys (line 26688) | def tmall_promotion_tip_item_modifys(
    method tmall_promotion_tip_item_add (line 26709) | def tmall_promotion_tip_item_add(
    method tmall_promotion_item_promotion_get (line 26728) | def tmall_promotion_item_promotion_get(
    method tmall_promotion_tjb_campaign_get (line 26758) | def tmall_promotion_tjb_campaign_get(
    method taobao_promotion_benefit_activity_delete (line 26786) | def taobao_promotion_benefit_activity_delete(
    method taobao_promotion_benefit_activity_send (line 26804) | def taobao_promotion_benefit_activity_send(
    method taobao_mobile_promotion_benefit_activity_send (line 26834) | def taobao_mobile_promotion_benefit_activity_send(
    method taobao_promotion_benefit_selector (line 26853) | def taobao_promotion_benefit_selector(
    method taobao_promotion_benefit_activity_update (line 26876) | def taobao_promotion_benefit_activity_update(
    method taobao_promotion_benefit_activity_relation (line 26895) | def taobao_promotion_benefit_activity_relation(
    method taobao_promotion_benefit_activity_time_update (line 26913) | def taobao_promotion_benefit_activity_time_update(
    method taobao_promotion_benefit_activity_detail_get (line 26938) | def taobao_promotion_benefit_activity_detail_get(
    method taobao_promotion_coupon_seller_search (line 26955) | def taobao_promotion_coupon_seller_search(
    method taobao_promotion_coupon_apply (line 26982) | def taobao_promotion_coupon_apply(
    method taobao_mobile_promotion_benefit_activity_send_share (line 27002) | def taobao_mobile_promotion_benefit_activity_send_share(
    method taobao_promotionmisc_common_item_detail_list_get (line 27048) | def taobao_promotionmisc_common_item_detail_list_get(
    method taobao_promotionmisc_common_item_detail_get (line 27072) | def taobao_promotionmisc_common_item_detail_get(
    method taobao_promotionmisc_common_item_activity_add (line 27095) | def taobao_promotionmisc_common_item_activity_add(
    method taobao_promotionmisc_common_item_detail_delete (line 27130) | def taobao_promotionmisc_common_item_detail_delete(
    method taobao_promotionmisc_common_item_detail_update (line 27152) | def taobao_promotionmisc_common_item_detail_update(
    method taobao_promotionmisc_common_item_detail_add (line 27186) | def taobao_promotionmisc_common_item_detail_add(
    method taobao_promotionmisc_common_item_activity_list_get (line 27216) | def taobao_promotionmisc_common_item_activity_list_get(
    method taobao_promotionmisc_common_item_activity_get (line 27237) | def taobao_promotionmisc_common_item_activity_get(
    method taobao_promotionmisc_common_item_activity_delete (line 27255) | def taobao_promotionmisc_common_item_activity_delete(
    method taobao_promotionmisc_common_item_activity_update (line 27274) | def taobao_promotionmisc_common_item_activity_update(
    method taobao_mobile_promotion_coupon_seller_search (line 27313) | def taobao_mobile_promotion_coupon_seller_search(
    method taobao_mobile_promotion_coupon_apply (line 27341) | def taobao_mobile_promotion_coupon_apply(
    method alibaba_interact_lotterydraw_dodraw (line 27369) | def alibaba_interact_lotterydraw_dodraw(
    method alibaba_marketing_lottery_activity_query (line 27387) | def alibaba_marketing_lottery_activity_query(
    method alibaba_marketing_lottery_activity_bind (line 27404) | def alibaba_marketing_lottery_activity_bind(
    method alibaba_marketing_lottery_draw_dodraw (line 27422) | def alibaba_marketing_lottery_draw_dodraw(
    method alibaba_marketing_lottery_activity_create (line 27440) | def alibaba_marketing_lottery_activity_create(
    method alibaba_marketing_lottery_activity_unbind (line 27457) | def alibaba_marketing_lottery_activity_unbind(
    method alibaba_marketing_lottery_activity_delete (line 27474) | def alibaba_marketing_lottery_activity_delete(
    method alibaba_marketing_lottery_award_query (line 27491) | def alibaba_marketing_lottery_award_query(
    method alibaba_marketing_lottery_award_append (line 27508) | def alibaba_marketing_lottery_award_append(
    method alibaba_marketing_lottery_schema_create (line 27526) | def alibaba_marketing_lottery_schema_create(
    method alibaba_marketing_lottery_rule_save (line 27543) | def alibaba_marketing_lottery_rule_save(
    method alibaba_wdk_marketing_coupon_sendma (line 27561) | def alibaba_wdk_marketing_coupon_sendma(
    method tmall_promotion_coupon_use (line 27579) | def tmall_promotion_coupon_use(
    method tmall_promotion_coupon_query (line 27612) | def tmall_promotion_coupon_query(
    method tmall_promotion_coupon_user (line 27636) | def tmall_promotion_coupon_user(
    method taobao_ump_promotion_global_discount_get (line 27660) | def taobao_ump_promotion_global_discount_get(
    method tmall_seiya_unline_launch (line 27673) | def tmall_seiya_unline_launch(
    method tmall_seiya_launch_monitor (line 27691) | def tmall_seiya_launch_monitor(
    method tmall_seiya_unline_failover_launch (line 27724) | def tmall_seiya_unline_failover_launch(
    method tmall_seiya_underline_upload (line 27755) | def tmall_seiya_underline_upload(
    method tmall_seiya_click_report (line 27782) | def tmall_seiya_click_report(
  class TbShuJu (line 27816) | class TbShuJu(DingTalkBaseAPI):
    method yunos_datatech_opendata_get (line 27821) | def yunos_datatech_opendata_get(
    method alibaba_dt_tmllcar_leadsinfo (line 27842) | def alibaba_dt_tmllcar_leadsinfo(
    method alibaba_dt_tmllcar_pricevalidate (line 27869) | def alibaba_dt_tmllcar_pricevalidate(
  class TbJiuDian (line 27906) | class TbJiuDian(DingTalkBaseAPI):
    method taobao_xhotel_rooms_ids_get (line 27911) | def taobao_xhotel_rooms_ids_get(
    method taobao_xhotel_order_official_qualification_get (line 27935) | def taobao_xhotel_order_official_qualification_get(
    method taobao_xhotel_order_offline_settle_cancel (line 28007) | def taobao_xhotel_order_offline_settle_cancel(
    method taobao_xhotel_order_hotelsign_query (line 28036) | def taobao_xhotel_order_hotelsign_query(
    method taobao_xhotel_data_service_seller_serviceindex (line 28065) | def taobao_xhotel_data_service_seller_serviceindex(
    method taobao_xhotel_data_service_hotel_serviceindex (line 28094) | def taobao_xhotel_data_service_hotel_serviceindex(
    method taobao_xhotel_data_service_order_detail (line 28129) | def taobao_xhotel_data_service_order_detail(
  class TbJuHuaSuan (line 28181) | class TbJuHuaSuan(DingTalkBaseAPI):
    method taobao_ju_items_search (line 28186) | def taobao_ju_items_search(
  class TbDianPuHuiYuanGuanLi (line 28205) | class TbDianPuHuiYuanGuanLi(DingTalkBaseAPI):
    method taobao_crm_grade_get (line 28210) | def taobao_crm_grade_get(
    method taobao_crm_shopvip_cancel (line 28224) | def taobao_crm_shopvip_cancel(
    method taobao_crm_members_increment_get (line 28238) | def taobao_crm_members_increment_get(
    method taobao_crm_members_group_batchadd (line 28268) | def taobao_crm_members_group_batchadd(
    method taobao_crm_grade_set (line 28290) | def taobao_crm_grade_set(
    method taobao_crm_members_groups_batchdelete (line 28321) | def taobao_crm_members_groups_batchdelete(
    method taobao_crm_groups_get (line 28343) | def taobao_crm_groups_get(
    method taobao_crm_group_update (line 28364) | def taobao_crm_group_update(
    method taobao_crm_group_add (line 28386) | def taobao_crm_group_add(
    method taobao_crm_members_search (line 28404) | def taobao_crm_members_search(
    method taobao_crm_memberinfo_update (line 28464) | def taobao_crm_memberinfo_update(
    method taobao_crm_members_get (line 28513) | def taobao_crm_members_get(
    method taobao_crm_group_delete (line 28558) | def taobao_crm_group_delete(
    method taobao_crm_group_append (line 28577) | def taobao_crm_group_append(
    method taobao_crm_group_move (line 28599) | def taobao_crm_group_move(
    method taobao_crm_grouptask_check (line 28621) | def taobao_crm_grouptask_check(
    method taobao_crm_grademkt_member_add (line 28640) | def taobao_crm_grademkt_member_add(
    method taobao_crm_grademkt_member_detail_query (line 28665) | def taobao_crm_grademkt_member_detail_query(
    method taobao_crm_grademkt_member_detail_delete (line 28687) | def taobao_crm_grademkt_member_detail_delete(
    method taobao_crm_grademkt_member_detail_create (line 28709) | def taobao_crm_grademkt_member_detail_create(
    method taobao_crm_grademkt_member_query (line 28731) | def taobao_crm_grademkt_member_query(
    method taobao_crm_member_group_get (line 28756) | def taobao_crm_member_group_get(
    method taobao_crm_service_channel_shortlink_create (line 28775) | def taobao_crm_service_channel_shortlink_create(
    method taobao_crm_card_update (line 28800) | def taobao_crm_card_update(
    method taobao_crm_exchange_crowdinstance_add (line 28827) | def taobao_crm_exchange_crowdinstance_add(
    method taobao_crm_exchange_crowdinstance_delete (line 28851) | def taobao_crm_exchange_crowdinstance_delete(
    method taobao_crm_exchange_activity_create (line 28875) | def taobao_crm_exchange_activity_create(
  class TbTaoDianDianWaiMai (line 28894) | class TbTaoDianDianWaiMai(DingTalkBaseAPI):
    method taobao_waimai_delivery_location_update (line 28899) | def taobao_waimai_delivery_location_update(
    method taobao_waimai_delivery_confirm (line 28928) | def taobao_waimai_delivery_confirm(
    method taobao_waimai_delivery_pickup (line 28954) | def taobao_waimai_delivery_pickup(
    method taobao_waimai_order_accept (line 28981) | def taobao_waimai_order_accept(
    method taobao_waimai_order_ack (line 29020) | def taobao_waimai_order_ack(
    method taobao_waimai_delivery_update (line 29041) | def taobao_waimai_delivery_update(
    method taobao_waimai_order_autoaccept (line 29080) | def taobao_waimai_order_autoaccept(
    method taobao_waimai_delivery_failedorder (line 29101) | def taobao_waimai_delivery_failedorder(
  class TbDuoMeiTiPingTai (line 29126) | class TbDuoMeiTiPingTai(DingTalkBaseAPI):
    method taobao_picture_category_get (line 29131) | def taobao_picture_category_get(
    method taobao_picture_get (line 29161) | def taobao_picture_get(
    method taobao_picture_delete (line 29215) | def taobao_picture_delete(
    method taobao_picture_upload (line 29233) | def taobao_picture_upload(
    method taobao_media_category_update (line 29267) | def taobao_media_category_update(
    method taobao_picture_category_add (line 29288) | def taobao_picture_category_add(
    method taobao_picture_category_update (line 29310) | def taobao_picture_category_update(
    method taobao_picture_replace (line 29335) | def taobao_picture_replace(
    method taobao_picture_update (line 29357) | def taobao_picture_update(
    method taobao_picture_userinfo_get (line 29379) | def taobao_picture_userinfo_get(
    method taobao_picture_isreferenced_get (line 29393) | def taobao_picture_isreferenced_get(
    method taobao_media_file_add (line 29412) | def taobao_media_file_add(
    method taobao_picture_pictures_get (line 29444) | def taobao_picture_pictures_get(
    method taobao_picture_pictures_count (line 29499) | def taobao_picture_pictures_count(
    method taobao_interactive_list_getbyuser (line 29538) | def taobao_interactive_list_getbyuser(
    method taobao_media_video_list (line 29559) | def taobao_media_video_list(
  class TbZiZhangHaoGuanLi (line 29578) | class TbZiZhangHaoGuanLi(DingTalkBaseAPI):
    method taobao_sellercenter_subusers_get (line 29583) | def taobao_sellercenter_subusers_get(
    method taobao_sellercenter_user_permissions_get (line 29602) | def taobao_sellercenter_user_permissions_get(
    method taobao_sellercenter_subuser_permissions_roles_get (line 29621) | def taobao_sellercenter_subuser_permissions_roles_get(
    method taobao_sellercenter_rolemembers_get (line 29640) | def taobao_sellercenter_rolemembers_get(
    method taobao_sellercenter_roles_get (line 29659) | def taobao_sellercenter_roles_get(
    method taobao_sellercenter_role_info_get (line 29678) | def taobao_sellercenter_role_info_get(
    method taobao_sellercenter_role_add (line 29697) | def taobao_sellercenter_role_add(
    method taobao_subusers_get (line 29725) | def taobao_subusers_get(
    method taobao_subuser_fullinfo_get (line 29744) | def taobao_subuser_fullinfo_get(
    method taobao_subuser_departments_get (line 29769) | def taobao_subuser_departments_get(
    method taobao_subuser_dutys_get (line 29788) | def taobao_subuser_dutys_get(
    method taobao_subuser_employee_add (line 29807) | def taobao_subuser_employee_add(
    method taobao_subuser_info_update (line 29865) | def taobao_subuser_info_update(
  class TbFuWuPingTai (line 29891) | class TbFuWuPingTai(DingTalkBaseAPI):
    method taobao_vas_subscribe_get (line 29896) | def taobao_vas_subscribe_get(
    method taobao_vas_order_search (line 29918) | def taobao_vas_order_search(
    method taobao_vas_subsc_search (line 29963) | def taobao_vas_subsc_search(
    method taobao_fuwu_sale_link_gen (line 30008) | def taobao_fuwu_sale_link_gen(
    method taobao_fuwu_scores_get (line 30030) | def taobao_fuwu_scores_get(
    method taobao_weike_subscinfo_get (line 30055) | def taobao_weike_subscinfo_get(
    method taobao_weike_performance_put (line 30081) | def taobao_weike_performance_put(
    method taobao_fuwu_sku_get (line 30101) | def taobao_fuwu_sku_get(
    method taobao_fuwu_sp_confirm_apply (line 30122) | def taobao_fuwu_sp_confirm_apply(
    method taobao_fuwu_purchase_order_confirm (line 30141) | def taobao_fuwu_purchase_order_confirm(
    method taobao_fuwu_sp_billreord_add (line 30160) | def taobao_fuwu_sp_billreord_add(
    method taobao_fuwu_purchase_order_pay (line 30179) | def taobao_fuwu_purchase_order_pay(
    method tmall_service_settleadjustment_search (line 30207) | def tmall_service_settleadjustment_search(
    method taobao_weike_eservice_schedule_get (line 30228) | def taobao_weike_eservice_schedule_get(
    method taobao_weike_eservice_subusers_get (line 30257) | def taobao_weike_eservice_subusers_get(
    method taobao_weike_eservice_schedule_put (line 30275) | def taobao_weike_eservice_schedule_put(
    method taobao_weike_eservice_order_get (line 30296) | def taobao_weike_eservice_order_get(
    method tmall_car_lease_synchronizeplans (line 30332) | def tmall_car_lease_synchronizeplans(
    method tmall_car_lease_reserve (line 30353) | def tmall_car_lease_reserve(
    method tmall_car_lease_riskcallback (line 30386) | def tmall_car_lease_riskcallback(
    method tmall_car_lease_consume (line 30404) | def tmall_car_lease_consume(
    method tmall_car_lease_tailpaymentback (line 30422) | def tmall_car_lease_tailpaymentback(
    method tmall_car_lease_itemcarinfo (line 30439) | def tmall_car_lease_itemcarinfo(
    method tmall_car_lease_fourlevelcar (line 30457) | def tmall_car_lease_fourlevelcar(
    method tmall_car_trydrive_updatereserveinfo (line 30478) | def tmall_car_trydrive_updatereserveinfo(
    method tmall_car_leaseorder_get (line 30516) | def tmall_car_leaseorder_get(
    method tmall_car_contract_download (line 30534) | def tmall_car_contract_download(
    method tmall_servicecenter_tp_funds_recover_query (line 30556) | def tmall_servicecenter_tp_funds_recover_query(
    method tmall_servicecenter_tp_funds_send_query (line 30573) | def tmall_servicecenter_tp_funds_send_query(
    method tmall_msf_verify (line 30591) | def tmall_msf_verify(
    method tmall_msf_receive (line 30615) | def tmall_msf_receive(
    method tmall_car_lease_freedownpayment_put (line 30638) | def tmall_car_lease_freedownpayment_put(
    method tmall_car_lease_item_activity_get (line 30668) | def tmall_car_lease_item_activity_get(
  class TbTuiKuan (line 30681) | class TbTuiKuan(DingTalkBaseAPI):
    method taobao_refunds_apply_get (line 30686) | def taobao_refunds_apply_get(
    method taobao_refund_get (line 30719) | def taobao_refund_get(
    method taobao_refund_messages_get (line 30740) | def taobao_refund_messages_get(
    method taobao_refund_message_add (line 30769) | def taobao_refund_message_add(
    method taobao_refund_refuse (line 30793) | def taobao_refund_refuse(
    method taobao_rp_refunds_agree (line 30826) | def taobao_rp_refunds_agree(
    method taobao_rp_returngoods_agree (line 30847) | def taobao_rp_returngoods_agree(
    method taobao_rp_refund_review (line 30896) | def taobao_rp_refund_review(
    method taobao_rp_returngoods_refill (line 30930) | def taobao_rp_returngoods_refill(
    method taobao_rp_returngoods_refuse (line 30958) | def taobao_rp_returngoods_refuse(
    method taobao_refund_refusereason_get (line 30988) | def taobao_refund_refusereason_get(
    method taobao_rdc_aligenius_sendgoods_cancel (line 31012) | def taobao_rdc_aligenius_sendgoods_cancel(
    method taobao_rdc_aligenius_order_returngoods_notify (line 31030) | def taobao_rdc_aligenius_order_returngoods_notify(
    method tmall_dispute_receive_get (line 31050) | def tmall_dispute_receive_get(
  class TbZhiJianPinKong (line 31096) | class TbZhiJianPinKong(DingTalkBaseAPI):
    method taobao_qt_report_get (line 31101) | def taobao_qt_report_get(
    method taobao_ts_property_get (line 31120) | def taobao_ts_property_get(
    method taobao_ts_subscribe_get (line 31138) | def taobao_ts_subscribe_get(
    method taobao_qt_report_update (line 31160) | def taobao_qt_report_update(
    method taobao_qt_report_add (line 31230) | def taobao_qt_report_add(
    method taobao_qt_report_delete (line 31299) | def taobao_qt_report_delete(
    method taobao_qt_reports_get (line 31318) | def taobao_qt_reports_get(
  class TbGuanLianTuiJian (line 31353) | class TbGuanLianTuiJian(DingTalkBaseAPI):
    method alibaba_orp_recommend (line 31358) | def alibaba_orp_recommend(
  class TbTianMaoFuWuShangPin (line 31387) | class TbTianMaoFuWuShangPin(DingTalkBaseAPI):
    method tmall_servicecenter_contracts_search (line 31392) | def tmall_servicecenter_contracts_search(
    method tmall_servicecenter_tasks_search (line 31413) | def tmall_servicecenter_tasks_search(
    method tmall_servicecenter_workcard_status_update (line 31434) | def tmall_servicecenter_workcard_status_update(
    method tmall_servicecenter_task_get (line 31536) | def tmall_servicecenter_task_get(
    method tmall_servicecenter_workcard_push (line 31555) | def tmall_servicecenter_workcard_push(
    method tmall_msf_identify_status_query (line 31589) | def tmall_msf_identify_status_query(
    method tmall_msf_reservation (line 31610) | def tmall_msf_reservation(
    method tmall_service_code_consume (line 31628) | def tmall_service_code_consume(
    method tmall_servicecenter_anomalyrecourse_querybyid (line 31652) | def tmall_servicecenter_anomalyrecourse_querybyid(
    method tmall_service_settleadjustment_request (line 31669) | def tmall_service_settleadjustment_request(
    method tmall_service_settleadjustment_get (line 31688) | def tmall_service_settleadjustment_get(
    method tmall_service_settleadjustment_cancel (line 31706) | def tmall_service_settleadjustment_cancel(
    method tmall_servicecenter_task_feedbacknoneedservice (line 31728) | def tmall_servicecenter_task_feedbacknoneedservice(
    method tmall_servicecenter_task_queryrefund (line 31745) | def tmall_servicecenter_task_queryrefund(
    method tmall_servicecenter_picture_upload (line 31762) | def tmall_servicecenter_picture_upload(
    method tmall_servicecenter_worker_create (line 31786) | def tmall_servicecenter_worker_create(
    method tmall_servicecenter_worker_query (line 31803) | def tmall_servicecenter_worker_query(
    method tmall_servicecenter_service_type_queryall (line 31821) | def tmall_servicecenter_service_type_queryall(
    method tmall_servicecenter_worker_querycapacitytask (line 31834) | def tmall_servicecenter_worker_querycapacitytask(
    method tmall_servicecenter_worker_querypage (line 31852) | def tmall_servicecenter_worker_querypage(
    method tmall_servicecenter_servicestore_updateservicestore (line 31870) | def tmall_servicecenter_servicestore_updateservicestore(
    method tmall_servicecenter_servicestore_deleteservicestore (line 31901) | def tmall_servicecenter_servicestore_deleteservicestore(
    method tmall_servicecenter_servicestore_deleteservicestorecoverservice (line 31932) | def tmall_servicecenter_servicestore_deleteservicestorecoverservice(
    method tmall_servicecenter_servicestore_createservicestore (line 31954) | def tmall_servicecenter_servicestore_createservicestore(
    method tmall_servicecenter_worker_delete (line 31985) | def tmall_servicecenter_worker_delete(
    method tmall_servicecenter_worker_update (line 32024) | def tmall_servicecenter_worker_update(
    method tmall_servicecenter_servicemonitormessage_update (line 32057) | def tmall_servicecenter_servicemonitormessage_update(
    method tmall_servicecenter_servicemonitormessage_search (line 32081) | def tmall_servicecenter_servicemonitormessage_search(
    method tmall_fuwu_serviceitem_list (line 32101) | def tmall_fuwu_serviceitem_list(
    method tmall_servicecenter_msf_tasks_update (line 32121) | def tmall_servicecenter_msf_tasks_update(
    method tmall_servicecenter_workcard_reassign (line 32150) | def tmall_servicecenter_workcard_reassign(
    method tmall_servicecenter_workcard_verifycode_resend (line 32167) | def tmall_servicecenter_workcard_verifycode_resend(
    method tmall_servicecenter_servicestore_update (line 32187) | def tmall_servicecenter_servicestore_update(
    method tmall_servicecenter_workcard_query (line 32205) | def tmall_servicecenter_workcard_query(
    method tmall_servicecenter_servicestore_create (line 32243) | def tmall_servicecenter_servicestore_create(
    method tmall_servicecenter_servicestore_updatestatus (line 32261) | def tmall_servicecenter_servicestore_updatestatus(
    method tmall_mallitemcenter_supplier_ability_update (line 32285) | def tmall_mallitemcenter_supplier_ability_update(
    method tmall_mallitemcenter_supplier_price_upload (line 32303) | def tmall_mallitemcenter_supplier_price_upload(
    method tmall_mallitemcenter_serviceproduct_query (line 32324) | def tmall_mallitemcenter_serviceproduct_query(
    method tmall_mallitemcenter_subscribe_query (line 32351) | def tmall_mallitemcenter_subscribe_query(
    method tmall_servicecenter_workcard_reserve (line 32369) | def tmall_servicecenter_workcard_reserve(
  class TbTianMaoJingPinKu (line 32403) | class TbTianMaoJingPinKu(DingTalkBaseAPI):
    method tmall_items_extend_search (line 32408) | def tmall_items_extend_search(
  class TbJuShiTa (line 32490) | class TbJuShiTa(DingTalkBaseAPI):
    method taobao_rds_db_create (line 32495) | def taobao_rds_db_create(
    method taobao_rds_db_get (line 32520) | def taobao_rds_db_get(
    method taobao_rds_db_delete (line 32542) | def taobao_rds_db_delete(
    method taobao_jushita_jdp_user_delete (line 32564) | def taobao_jushita_jdp_user_delete(
    method taobao_jushita_jdp_user_add (line 32586) | def taobao_jushita_jdp_user_add(
    method taobao_jushita_jdp_users_get (line 32608) | def taobao_jushita_jdp_users_get(
    method taobao_jds_trade_traces_get (line 32638) | def taobao_jds_trade_traces_get(
    method taobao_jds_trades_statistics_diff (line 32656) | def taobao_jds_trades_statistics_diff(
    method taobao_jds_trades_statistics_get (line 32682) | def taobao_jds_trades_statistics_get(
    method taobao_jds_hluser_update (line 32700) | def taobao_jds_hluser_update(
    method taobao_jds_hluser_get (line 32721) | def taobao_jds_hluser_get(
    method taobao_jds_refund_traces_get (line 32734) | def taobao_jds_refund_traces_get(
    method taobao_oc_tradetag_attach (line 32752) | def taobao_oc_tradetag_attach(
    method taobao_oc_trades_bytag_get (line 32782) | def taobao_oc_trades_bytag_get(
    method taobao_oc_tradetags_get (line 32809) | def taobao_oc_tradetags_get(
    method taobao_oc_tradetrace_alerts_get (line 32840) | def taobao_oc_tradetrace_alerts_get(
    method taobao_oc_sla_summary_get (line 32865) | def taobao_oc_sla_summary_get(
    method taobao_oc_ap_contracturl_get (line 32879) | def taobao_oc_ap_contracturl_get(
    method taobao_oc_ap_contractsigned_get (line 32891) | def taobao_oc_ap_contractsigned_get(
    method taobao_oc_order_ap_update (line 32903) | def taobao_oc_order_ap_update(
    method taobao_oc_order_create (line 32921) | def taobao_oc_order_create(
    method taobao_oc_ap_rule_create (line 32939) | def taobao_oc_ap_rule_create(
    method tmall_omni_pc_impressions_getbyshopid (line 32960) | def tmall_omni_pc_impressions_getbyshopid(
    method tmall_omni_pc_salesdata_getbyshopid (line 32985) | def tmall_omni_pc_salesdata_getbyshopid(
    method tmall_omni_pc_mapping_getbyomniid (line 33012) | def tmall_omni_pc_mapping_getbyomniid(
    method tmall_omni_pc_mapping_getbyshopid (line 33036) | def tmall_omni_pc_mapping_getbyshopid(
    method tmall_omni_pc_impressions_getbyomniid (line 33062) | def tmall_omni_pc_impressions_getbyomniid(
    method tmall_omni_pc_salesdata_getbyomniid (line 33088) | def tmall_omni_pc_salesdata_getbyomniid(
    method tmall_omni_pc_iteminfo_getbyomniid (line 33115) | def tmall_omni_pc_iteminfo_getbyomniid(
    method tmall_omni_pc_iteminfo_getbyshopid (line 33139) | def tmall_omni_pc_iteminfo_getbyshopid(
    method taobao_qimen_orderstatus_update (line 33163) | def taobao_qimen_orderstatus_update(
    method taobao_rds_db_createaccount (line 33199) | def taobao_rds_db_createaccount(
    method taobao_rds_db_deleteaccount (line 33216) | def taobao_rds_db_deleteaccount(
    method taobao_rds_db_getaccount (line 33236) | def taobao_rds_db_getaccount(
    method taobao_rds_db_getdb (line 33256) | def taobao_rds_db_getdb(
  class TbDianZiWuLiu (line 33277) | class TbDianZiWuLiu(DingTalkBaseAPI):
    method taobao_vmarket_eticket_beforeconsume (line 33282) | def taobao_vmarket_eticket_beforeconsume(
    method taobao_vmarket_eticket_consume (line 33315) | def taobao_vmarket_eticket_consume(
    method taobao_vmarket_eticket_resend (line 33360) | def taobao_vmarket_eticket_resend(
    method taobao_vmarket_eticket_send (line 33390) | def taobao_vmarket_eticket_send(
    method taobao_vmarket_eticket_reverse (line 33421) | def taobao_vmarket_eticket_reverse(
    method taobao_vmarket_eticket_codes_get (line 33463) | def taobao_vmarket_eticket_codes_get(
    method taobao_vmarket_eticket_oplogs_get (line 33484) | def taobao_vmarket_eticket_oplogs_get(
    method taobao_vmarket_eticket_tasks_get (line 33529) | def taobao_vmarket_eticket_tasks_get(
    method taobao_vmarket_eticket_manage_notify (line 33559) | def taobao_vmarket_eticket_manage_notify(
    method taobao_vmarket_eticket_auth_beforeconsume (line 33584) | def taobao_vmarket_eticket_auth_beforeconsume(
    method taobao_vmarket_eticket_auth_consume (line 33608) | def taobao_vmarket_eticket_auth_consume(
    method taobao_vmarket_eticket_qrcode_upload (line 33638) | def taobao_vmarket_eticket_qrcode_upload(
    method taobao_vmarket_eticket_time_expand (line 33659) | def taobao_vmarket_eticket_time_expand(
    method taobao_vmarket_eticket_store_get (line 33681) | def taobao_vmarket_eticket_store_get(
    method taobao_vmarket_eticket_package_base_get (line 33699) | def taobao_vmarket_eticket_package_base_get(
    method taobao_vmarket_eticket_card_consumecard (line 33716) | def taobao_vmarket_eticket_card_consumecard(
    method taobao_vmarket_eticket_package_base_list_get (line 33762) | def taobao_vmarket_eticket_package_base_list_get(
    method taobao_vmarket_eticket_flow_resend (line 33774) | def taobao_vmarket_eticket_flow_resend(
    method taobao_vmarket_eticket_flow_consume (line 33794) | def taobao_vmarket_eticket_flow_consume(
    method taobao_vmarket_eticket_failsend (line 33820) | def taobao_vmarket_eticket_failsend(
    method taobao_eticket_merchant_ma_reverse (line 33848) | def taobao_eticket_merchant_ma_reverse(
    method taobao_eticket_merchant_img_upload (line 33884) | def taobao_eticket_merchant_img_upload(
    method taobao_eticket_merchant_ma_available (line 33902) | def taobao_eticket_merchant_ma_available(
    method taobao_eticket_merchant_ma_consume (line 33938) | def taobao_eticket_merchant_ma_consume(
    method taobao_eticket_merchant_ma_resend (line 33976) | def taobao_eticket_merchant_ma_resend(
    method taobao_eticket_merchant_ma_failsend (line 34003) | def taobao_eticket_merchant_ma_failsend(
    method taobao_eticket_merchant_ma_send (line 34033) | def taobao_eticket_merchant_ma_send(
    method taobao_eticket_merchant_tbma_get (line 34059) | def taobao_eticket_merchant_tbma_get(
  class TbCaiPiao (line 34077) | class TbCaiPiao(DingTalkBaseAPI):
    method taobao_caipiao_signstatus_check (line 34082) | def taobao_caipiao_signstatus_check(
    method taobao_caipiao_lotterytypes_get (line 34095) | def taobao_caipiao_lotterytypes_get(
    method taobao_caipiao_present_stat_get (line 34108) | def taobao_caipiao_present_stat_get(
    method taobao_caipiao_lottery_sendbynick (line 34126) | def taobao_caipiao_lottery_sendbynick(
    method taobao_caipiao_shop_info_input (line 34154) | def taobao_caipiao_shop_info_input(
    method taobao_caipiao_goods_info_input (line 34188) | def taobao_caipiao_goods_info_input(
    method taobao_caipiao_goods_info_get (line 34234) | def taobao_caipiao_goods_info_get(
    method taobao_caipiao_marketing_put (line 34247) | def taobao_caipiao_marketing_put(
  class TbZhangWu (line 34275) | class TbZhangWu(DingTalkBaseAPI):
    method taobao_bill_accounts_get (line 34280) | def taobao_bill_accounts_get(
    method taobao_bill_book_bills_get (line 34301) | def taobao_bill_book_bills_get(
    method taobao_bill_bills_get (line 34337) | def taobao_bill_bills_get(
    method taobao_tae_book_bills_get (line 34379) | def taobao_tae_book_bills_get(
    method taobao_tae_book_bill_get (line 34414) | def taobao_tae_book_bill_get(
    method taobao_tae_accounts_get (line 34441) | def taobao_tae_accounts_get(
    method taobao_tae_bills_get (line 34461) | def taobao_tae_bills_get(
    method taobao_tae_bill_get (line 34502) | def taobao_tae_bill_get(
  class TbPaiMai (line 34531) | class TbPaiMai(DingTalkBaseAPI):
    method taobao_paimai_tbcar_upload_file (line 34536) | def taobao_paimai_tbcar_upload_file(
    method taobao_paimai_tbcar_publish_report (line 34560) | def taobao_paimai_tbcar_publish_report(
    method taobao_paimai_itemprops_get (line 34586) | def taobao_paimai_itemprops_get(
  class TbQianNiuJieKou (line 34644) | class TbQianNiuJieKou(DingTalkBaseAPI):
    method taobao_qianniu_task_message_send (line 34649) | def taobao_qianniu_task_message_send(
    method taobao_qianniu_tasks_get (line 34670) | def taobao_qianniu_tasks_get(
    method taobao_qianniu_task_cancel (line 34764) | def taobao_qianniu_task_cancel(
    method taobao_qianniu_task_finish (line 34785) | def taobao_qianniu_task_finish(
    method taobao_qianniu_task_update (line 34806) | def taobao_qianniu_task_update(
    method taobao_qianniu_taskmeta_update (line 34854) | def taobao_qianniu_taskmeta_update(
    method taobao_qianniu_task_create (line 34872) | def taobao_qianniu_task_create(
    method taobao_qianniu_tasks_count (line 34893) | def taobao_qianniu_tasks_count(
    method taobao_qianniu_task_increase (line 34955) | def taobao_qianniu_task_increase(
    method taobao_qianniu_taskmetas_get (line 34976) | def taobao_qianniu_taskmetas_get(
    method taobao_qianniu_task_remove (line 35027) | def taobao_qianniu_task_remove(
    method taobao_qianniu_number_put (line 35045) | def taobao_qianniu_number_put(
    method taobao_daogoubao_order_statistics_total (line 35064) | def taobao_daogoubao_order_statistics_total(
    method taobao_incbook_employee_query (line 35085) | def taobao_incbook_employee_query(
    method taobao_incbook_employee_edit (line 35127) | def taobao_incbook_employee_edit(
    method taobao_incbook_department_edit (line 35172) | def taobao_incbook_department_edit(
    method taobao_incbook_employee_add (line 35196) | def taobao_incbook_employee_add(
    method taobao_incbook_department_add (line 35241) | def taobao_incbook_department_add(
    method taobao_incbook_department_query (line 35265) | def taobao_incbook_department_query(
    method taobao_incbook_department_remove (line 35286) | def taobao_incbook_department_remove(
    method taobao_incbook_enterprise_query (line 35304) | def taobao_incbook_enterprise_query(
    method taobao_qianniu_cloudkefu_onlinestatuslog_get (line 35323) | def taobao_qianniu_cloudkefu_onlinestatuslog_get(
  class TbXiaoXiFuWu (line 35349) | class TbXiaoXiFuWu(DingTalkBaseAPI):
    method taobao_tmc_groups_get (line 35354) | def taobao_tmc_groups_get(
    method taobao_tmc_group_delete (line 35377) | def taobao_tmc_group_delete(
    method taobao_tmc_group_add (line 35402) | def taobao_tmc_group_add(
    method taobao_tmc_messages_confirm (line 35426) | def taobao_tmc_messages_confirm(
    method taobao_tmc_messages_consume (line 35450) | def taobao_tmc_messages_consume(
    method taobao_tmc_message_produce (line 35472) | def taobao_tmc_message_produce(
    method taobao_tmc_user_cancel (line 35510) | def taobao_tmc_user_cancel(
    method taobao_tmc_user_permit (line 35531) | def taobao_tmc_user_permit(
    method taobao_tmc_user_get (line 35550) | def taobao_tmc_user_get(
    method alipay_xiaodai_user_permit (line 35575) | def alipay_xiaodai_user_permit(
    method taobao_tmc_messages_produce (line 35594) | def taobao_tmc_messages_produce(
    method taobao_tmc_queue_get (line 35611) | def taobao_tmc_queue_get(
    method taobao_tmc_user_topics_get (line 35630) | def taobao_tmc_user_topics_get(
    method taobao_tmc_msg_sendrecord (line 35648) | def taobao_tmc_msg_sendrecord(
    method taobao_tmc_topic_group_delete (line 35672) | def taobao_tmc_topic_group_delete(
    method taobao_tmc_topic_group_add (line 35696) | def taobao_tmc_topic_group_add(
    method taobao_istore_gifting_message_get (line 35718) | def taobao_istore_gifting_message_get(
  class TbBenDiShengHuo (line 35737) | class TbBenDiShengHuo(DingTalkBaseAPI):
    method taobao_place_storecategory_get (line 35742) | def taobao_place_storecategory_get(
    method taobao_place_store_modify (line 35755) | def taobao_place_store_modify(
    method taobao_place_store_delete (line 35773) | def taobao_place_store_delete(
  class TbALiYunOcs (line 35792) | class TbALiYunOcs(DingTalkBaseAPI):
    method m_kvstore_aliyuncs_com_CreateInstance_2015_03_01 (line 35797) | def m_kvstore_aliyuncs_com_CreateInstance_2015_03_01(
    method m_kvstore_aliyuncs_com_DeleteInstance_2015_03_01 (line 35841) | def m_kvstore_aliyuncs_com_DeleteInstance_2015_03_01(
    method m_kvstore_aliyuncs_com_DescribeInstances_2015_03_01 (line 35861) | def m_kvstore_aliyuncs_com_DescribeInstances_2015_03_01(
    method m_kvstore_aliyuncs_com_ModifyInstanceAttribute_2015_03_01 (line 35904) | def m_kvstore_aliyuncs_com_ModifyInstanceAttribute_2015_03_01(
    method m_kvstore_aliyuncs_com_FlushInstance_2015_03_01 (line 35930) | def m_kvstore_aliyuncs_com_FlushInstance_2015_03_01(
    method m_kvstore_aliyuncs_com_ModifySecurityIps_2015_03_01 (line 35950) | def m_kvstore_aliyuncs_com_ModifySecurityIps_2015_03_01(
    method m_kvstore_aliyuncs_com_DescribeSecurityIps_2015_03_01 (line 35973) | def m_kvstore_aliyuncs_com_DescribeSecurityIps_2015_03_01(
    method m_kvstore_aliyuncs_com_DescribeRegions_2015_03_01 (line 35992) | def m_kvstore_aliyuncs_com_DescribeRegions_2015_03_01(
    method m_kvstore_aliyuncs_com_DescribeHistoryMonitorValues_2015_03_01 (line 36004) | def m_kvstore_aliyuncs_com_DescribeHistoryMonitorValues_2015_03_01(
    method m_kvstore_aliyuncs_com_ModifyInstanceCapacity_2015_03_01 (line 36033) | def m_kvstore_aliyuncs_com_ModifyInstanceCapacity_2015_03_01(
  class TbYunOS (line 36057) | class TbYunOS(DingTalkBaseAPI):
    method yunos_cloudcard_usercard_add (line 36062) | def yunos_cloudcard_usercard_add(
    method yunos_open_token_get (line 36082) | def yunos_open_token_get(
    method yunos_cloudcard_batch_opermsg_send (line 36097) | def yunos_cloudcard_batch_opermsg_send(
    method yunos_idc_notice_push (line 36115) | def yunos_idc_notice_push(
    method yunos_idc_notice_push_sandbox (line 36162) | def yunos_idc_notice_push_sandbox(
    method yunos_yoc_router_action (line 36209) | def yunos_yoc_router_action(
    method yunos_yoc_router_bindlistener (line 36229) | def yunos_yoc_router_bindlistener(
    method yunos_yoc_router_bindactor (line 36247) | def yunos_yoc_router_bindactor(
    method yunos_idc_food_sync_sandbox (line 36265) | def yunos_idc_food_sync_sandbox(
    method yunos_idc_trade_items_getcategorybytab (line 36293) | def yunos_idc_trade_items_getcategorybytab(
    method yunos_idc_trade_items_getitembycategory (line 36311) | def yunos_idc_trade_items_getitembycategory(
    method yunos_yoc_channel_schedule_sandbox (line 36341) | def yunos_yoc_channel_schedule_sandbox(
    method yunos_algorithm_api_get (line 36361) | def yunos_algorithm_api_get(
    method aliyun_cosmo_gateway_invoke (line 36394) | def aliyun_cosmo_gateway_invoke(
  class TbALiYun (line 36416) | class TbALiYun(DingTalkBaseAPI):
    method rds_aliyuncs_com_CreateDatabase_2013_05_28 (line 36421) | def rds_aliyuncs_com_CreateDatabase_2013_05_28(
    method rds_aliyuncs_com_DescribeDatabases_2013_05_28 (line 36456) | def rds_aliyuncs_com_DescribeDatabases_2013_05_28(
    method rds_aliyuncs_com_CreateAccount_2013_05_28 (line 36482) | def rds_aliyuncs_com_CreateAccount_2013_05_28(
    method rds_aliyuncs_com_DescribeAccounts_2013_05_28 (line 36517) | def rds_aliyuncs_com_DescribeAccounts_2013_05_28(
    method slb_aliyuncs_com_SetLoadBalancerName_2013_02_21 (line 36543) | def slb_aliyuncs_com_SetLoadBalancerName_2013_02_21(
    method slb_aliyuncs_com_DescribeBackendServers_2013_02_21 (line 36564) | def slb_aliyuncs_com_DescribeBackendServers_2013_02_21(
    method slb_aliyuncs_com_RemoveBackendServers_2013_02_21 (line 36585) | def slb_aliyuncs_com_RemoveBackendServers_2013_02_21(
    method slb_aliyuncs_com_AddBackendServers_2013_02_21 (line 36605) | def slb_aliyuncs_com_AddBackendServers_2013_02_21(
    method slb_aliyuncs_com_DescribeLoadBalancerTCPListenerAttribute_2013_02_21 (line 36625) | def slb_aliyuncs_com_DescribeLoadBalancerTCPListenerAttribute_2013_02_21(
    method slb_aliyuncs_com_DescribeLoadBalancerHTTPListenerAttribute_2013_02_21 (line 36647) | def slb_aliyuncs_com_DescribeLoadBalancerHTTPListenerAttribute_2013_02...
    method slb_aliyuncs_com_DeleteLoadBalancerListener_2013_02_21 (line 36669) | def slb_aliyuncs_com_DeleteLoadBalancerListener_2013_02_21(
    method slb_aliyuncs_com_CreateLoadBalancerTCPListener_2013_02_21 (line 36691) | def slb_aliyuncs_com_CreateLoadBalancerTCPListener_2013_02_21(
    method slb_aliyuncs_com_DescribeRegions_2013_02_21 (line 36738) | def slb_aliyuncs_com_DescribeRegions_2013_02_21(
    method slb_aliyuncs_com_DescribeLoadBalancerAttribute_2013_02_21 (line 36753) | def slb_aliyuncs_com_DescribeLoadBalancerAttribute_2013_02_21(
    method slb_aliyuncs_com_DescribeLoadBalancers_2013_02_21 (line 36767) | def slb_aliyuncs_com_DescribeLoadBalancers_2013_02_21(
    method slb_aliyuncs_com_SetLoadBalancerStatus_2013_02_21 (line 36788) | def slb_aliyuncs_com_SetLoadBalancerStatus_2013_02_21(
    method ecs_aliyuncs_com_JoinSecurityGroup_2013_01_10 (line 36812) | def ecs_aliyuncs_com_JoinSecurityGroup_2013_01_10(
    method ecs_aliyuncs_com_ResetInstance_2013_01_10 (line 36835) | def ecs_aliyuncs_com_ResetInstance_2013_01_10(
    method ecs_aliyuncs_com_DescribeZones_2013_01_10 (line 36862) | def ecs_aliyuncs_com_DescribeZones_2013_01_10(
    method ecs_aliyuncs_com_DescribeRegions_2013_01_10 (line 36882) | def ecs_aliyuncs_com_DescribeRegions_2013_01_10(
    method ecs_aliyuncs_com_DeleteSecurityGroup_2013_01_10 (line 36897) | def ecs_aliyuncs_com_DeleteSecurityGroup_2013_01_10(
    method ecs_aliyuncs_com_DescribeSecurityGroups_2013_01_10 (line 36921) | def ecs_aliyuncs_com_DescribeSecurityGroups_2013_01_10(
    method ecs_aliyuncs_com_DescribeSecurityGroupAttribute_2013_01_10 (line 36947) | def ecs_aliyuncs_com_DescribeSecurityGroupAttribute_2013_01_10(
    method ecs_aliyuncs_com_CreateSecurityGroup_2013_01_10 (line 36973) | def ecs_aliyuncs_com_CreateSecurityGroup_2013_01_10(
    method ecs_aliyuncs_com_ReleasePublicIpAddress_2013_01_10 (line 36999) | def ecs_aliyuncs_com_ReleasePublicIpAddress_2013_01_10(
    method ecs_aliyuncs_com_DescribeImages_2013_01_10 (line 37020) | def ecs_aliyuncs_com_DescribeImages_2013_01_10(
    method ecs_aliyuncs_com_DescribeInstanceDisks_2013_01_10 (line 37052) | def ecs_aliyuncs_com_DescribeInstanceDisks_2013_01_10(
    method ecs_aliyuncs_com_DescribeInstanceStatus_2013_01_10 (line 37072) | def ecs_aliyuncs_com_DescribeInstanceStatus_2013_01_10(
    method ecs_aliyuncs_com_RebootInstance_2013_01_10 (line 37101) | def ecs_aliyuncs_com_RebootInstance_2013_01_10(
    method ecs_aliyuncs_com_StopInstance_2013_01_10 (line 37125) | def ecs_aliyuncs_com_StopInstance_2013_01_10(
    method ecs_aliyuncs_com_StartInstance_2013_01_10 (line 37149) | def ecs_aliyuncs_com_StartInstance_2013_01_10(
    method ecs_aliyuncs_com_DescribeSnapshotAttribute_2013_01_10 (line 37170) | def ecs_aliyuncs_com_DescribeSnapshotAttribute_2013_01_10(
    method ecs_aliyuncs_com_DescribeSnapshots_2013_01_10 (line 37193) | def ecs_aliyuncs_com_DescribeSnapshots_2013_01_10(
    method ecs_aliyuncs_com_DescribeInstanceTypes_2013_01_10 (line 37216) | def ecs_aliyuncs_com_DescribeInstanceTypes_2013_01_10(
    method ecs_aliyuncs_com_AllocatePublicIpAddress_2013_01_10 (line 37231) | def ecs_aliyuncs_com_AllocatePublicIpAddress_2013_01_10(
    method ecs_aliyuncs_com_DeleteImage_2013_01_10 (line 37251) | def ecs_aliyuncs_com_DeleteImage_2013_01_10(
    method ecs_aliyuncs_com_CreateImage_2013_01_10 (line 37275) | def ecs_aliyuncs_com_CreateImage_2013_01_10(
    method ecs_aliyuncs_com_DeleteSnapshot_2013_01_10 (line 37307) | def ecs_aliyuncs_com_DeleteSnapshot_2013_01_10(
    method ecs_aliyuncs_com_CreateSnapshot_2013_01_10 (line 37334) | def ecs_aliyuncs_com_CreateSnapshot_2013_01_10(
    method ecs_aliyuncs_com_DeleteDisk_2013_01_10 (line 37363) | def ecs_aliyuncs_com_DeleteDisk_2013_01_10(
    method ecs_aliyuncs_com_AddDisk_2013_01_10 (line 37387) | def ecs_aliyuncs_com_AddDisk_2013_01_10(
    method ecs_aliyuncs_com_DeleteInstance_2013_01_10 (line 37416) | def ecs_aliyuncs_com_DeleteInstance_2013_01_10(
    method ecs_aliyuncs_com_DescribeInstanceAttribute_2013_01_10 (line 37437) | def ecs_aliyuncs_com_DescribeInstanceAttribute_2013_01_10(
    method ecs_aliyuncs_com_CreateInstance_2013_01_10 (line 37457) | def ecs_aliyuncs_com_CreateInstance_2013_01_10(
    method ecs_aliyuncs_com_GetMonitorData_2013_01_10 (line 37549) | def ecs_aliyuncs_com_GetMonitorData_2013_01_10(
    method ecs_aliyuncs_com_RevokeSecurityGroup_2013_01_10 (line 37564) | def ecs_aliyuncs_com_RevokeSecurityGroup_2013_01_10(
    method ecs_aliyuncs_com_AuthorizeSecurityGroup_2013_01_10 (line 37606) | def ecs_aliyuncs_com_AuthorizeSecurityGroup_2013_01_10(
    method ecs_aliyuncs_com_ModifyInstanceAttribute_2013_01_10 (line 37648) | def ecs_aliyuncs_com_ModifyInstanceAttribute_2013_01_10(
    method ecs_aliyuncs_com_AddIpRange_2013_01_10 (line 37681) | def ecs_aliyuncs_com_AddIpRange_2013_01_10(
    method ecs_aliyuncs_com_ResetDisk_2013_01_10 (line 37697) | def ecs_aliyuncs_com_ResetDisk_2013_01_10(
    method ecs_aliyuncs_com_AttachDisk_2014_05_26 (line 37724) | def ecs_aliyuncs_com_AttachDisk_2014_05_26(
    method ecs_aliyuncs_com_DeleteInstance_2014_05_26 (line 37754) | def ecs_aliyuncs_com_DeleteInstance_2014_05_26(
    method ecs_aliyuncs_com_DescribeInstanceAttribute_2014_05_26 (line 37775) | def ecs_aliyuncs_com_DescribeInstanceAttribute_2014_05_26(
    method ecs_aliyuncs_com_ModifyInstanceAttribute_2014_05_26 (line 37794) | def ecs_aliyuncs_com_ModifyInstanceAttribute_2014_05_26(
    method ecs_aliyuncs_com_RebootInstance_2014_05_26 (line 37826) | def ecs_aliyuncs_com_RebootInstance_2014_05_26(
    method ecs_aliyuncs_com_DescribeDisks_2014_05_26 (line 37850) | def ecs_aliyuncs_com_DescribeDisks_2014_05_26(
    method ecs_aliyuncs_com_StopInstance_2014_05_26 (line 37905) | def ecs_aliyuncs_com_StopInstance_2014_05_26(
    method ecs_aliyuncs_com_CreateDisk_2014_05_26 (line 37929) | def ecs_aliyuncs_com_CreateDisk_2014_05_26(
    method ecs_aliyuncs_com_StartInstance_2014_05_26 (line 37969) | def ecs_aliyuncs_com_StartInstance_2014_05_26(
    method ecs_aliyuncs_com_CreateInstance_2014_05_26 (line 37990) | def ecs_aliyuncs_com_CreateInstance_2014_05_26(
    method ecs_aliyuncs_com_CreateSecurityGroup_2014_05_26 (line 38147) | def ecs_aliyuncs_com_CreateSecurityGroup_2014_05_26(
    method ecs_aliyuncs_com_AllocatePublicIpAddress_2014_05_26 (line 38179) | def ecs_aliyuncs_com_AllocatePublicIpAddress_2014_05_26(
    method ecs_aliyuncs_com_DescribeImages_2014_05_26 (line 38199) | def ecs_aliyuncs_com_DescribeImages_2014_05_26(
    method ecs_aliyuncs_com_DescribeSnapshots_2014_05_26 (line 38243) | def ecs_aliyuncs_com_DescribeSnapshots_2014_05_26(
    method ecs_aliyuncs_com_DescribeInstanceTypes_2014_05_26 (line 38277) | def ecs_aliyuncs_com_DescribeInstanceTypes_2014_05_26(
    method ecs_aliyuncs_com_DescribeZones_2014_05_26 (line 38291) | def ecs_aliyuncs_com_DescribeZones_2014_05_26(
    method ecs_aliyuncs_com_DescribeRegions_2014_05_26 (line 38310) | def ecs_aliyuncs_com_DescribeRegions_2014_05_26(
    method ecs_aliyuncs_com_DescribeSecurityGroups_2014_05_26 (line 38324) | def ecs_aliyuncs_com_DescribeSecurityGroups_2014_05_26(
    method ecs_aliyuncs_com_DescribeSecurityGroupAttribute_2014_05_26 (line 38352) | def ecs_aliyuncs_com_DescribeSecurityGroupAttribute_2014_05_26(
    method ecs_aliyuncs_com_AuthorizeSecurityGroup_2014_05_26 (line 38375) | def ecs_aliyuncs_com_AuthorizeSecurityGroup_2014_05_26(
    method ecs_aliyuncs_com_DescribeInstances_2014_05_26 (line 38423) | def ecs_aliyuncs_com_DescribeInstances_2014_05_26(
    method rds_aliyuncs_com_CreateDBInstance_2014_08_15 (line 38475) | def rds_aliyuncs_com_CreateDBInstance_2014_08_15(
    method rds_aliyuncs_com_ModifySecurityIps_2014_08_15 (line 38542) | def rds_aliyuncs_com_ModifySecurityIps_2014_08_15(
    method rds_aliyuncs_com_DescribeDBInstanceAttribute_2014_08_15 (line 38572) | def rds_aliyuncs_com_DescribeDBInstanceAttribute_2014_08_15(
    method rds_aliyuncs_com_DescribeDBInstances_2014_08_15 (line 38592) | def rds_aliyuncs_com_DescribeDBInstances_2014_08_15(
    method odps_aliyuncs_com_DescribeOdpsService_2014_12_15 (line 38668) | def odps_aliyuncs_com_DescribeOdpsService_2014_12_15(
    method rds_aliyuncs_com_DescribeDBInstancesByPerformance_2014_08_15 (line 38680) | def rds_aliyuncs_com_DescribeDBInstancesByPerformance_2014_08_15(
    method r_kvstore_aliyuncs_com_DescribeInstanceConfig_2015_01_01 (line 38742) | def r_kvstore_aliyuncs_com_DescribeInstanceConfig_2015_01_01(
    method r_kvstore_aliyuncs_com_ModifyInstanceCapacity_2015_01_01 (line 38762) | def r_kvstore_aliyuncs_com_ModifyInstanceCapacity_2015_01_01(
    method r_kvstore_aliyuncs_com_DescribeMonitorValues_2015_01_01 (line 38785) | def r_kvstore_aliyuncs_com_DescribeMonitorValues_2015_01_01(
    method r_kvstore_aliyuncs_com_DescribeRegions_2015_01_01 (line 38807) | def r_kvstore_aliyuncs_com_DescribeRegions_2015_01_01(
    method r_kvstore_aliyuncs_com_DescribeMonitorItems_2015_01_01 (line 38821) | def r_kvstore_aliyuncs_com_DescribeMonitorItems_2015_01_01(
    method r_kvstore_aliyuncs_com_DescribeInstances_2015_01_01 (line 38835) | def r_kvstore_aliyuncs_com_DescribeInstances_2015_01_01(
    method r_kvstore_aliyuncs_com_DescribeHistoryMonitorValues_2015_01_01 (line 38866) | def r_kvstore_aliyuncs_com_DescribeHistoryMonitorValues_2015_01_01(
    method r_kvstore_aliyuncs_com_DeleteInstance_2015_01_01 (line 38897) | def r_kvstore_aliyuncs_com_DeleteInstance_2015_01_01(
    method r_kvstore_aliyuncs_com_CreateInstance_2015_01_01 (line 38917) | def r_kvstore_aliyuncs_com_CreateInstance_2015_01_01(
    method push_aliyuncs_com_pushMsg_2015_03_18 (line 38954) | def push_aliyuncs_com_pushMsg_2015_03_18(
    method push_aliyuncs_com_pushNotification_2015_03_18 (line 39008) | def push_aliyuncs_com_pushNotification_2015_03_18(
    method rds_aliyuncs_com_LockDBInstance_2014_08_15 (line 39089) | def rds_aliyuncs_com_LockDBInstance_2014_08_15(
    method push_aliyuncs_com_push_20150518 (line 39121) | def push_aliyuncs_com_push_20150518(
  class TbHuoChePiao (line 39206) | class TbHuoChePiao(DingTalkBaseAPI):
    method taobao_train_agent_order_get (line 39211) | def taobao_train_agent_order_get(
    method taobao_train_agent_returnticket_confirm (line 39231) | def taobao_train_agent_returnticket_confirm(
    method taobao_train_agent_bookticket_confirm (line 39267) | def taobao_train_agent_bookticket_confirm(
    method taobao_train_agent_bookorders_get (line 39333) | def taobao_train_agent_bookorders_get(
    method taobao_train_agent_returnorders_get (line 39351) | def taobao_train_agent_returnorders_get(
    method taobao_train_agent_change_refuse (line 39372) | def taobao_train_agent_change_refuse(
    method taobao_train_agent_change_get (line 39391) | def taobao_train_agent_change_get(
    method taobao_train_agent_change_agree (line 39412) | def taobao_train_agent_change_agree(
    method taobao_train_agent_changeorders_get (line 39431) | def taobao_train_agent_changeorders_get(
    method taobao_train_agent_handleticket_confirm (line 39449) | def taobao_train_agent_handleticket_confirm(
    method taobao_train_agentseatprice_set (line 39472) | def taobao_train_agentseatprice_set(
    method taobao_train_agent_autorefund_refundfee (line 39493) | def taobao_train_agent_autorefund_refundfee(
    method taobao_train_agent_mobile_sendsms (line 39544) | def taobao_train_agent_mobile_sendsms(
    method taobao_train_agent_session_get (line 39570) | def taobao_train_agent_session_get(
    method taobao_train_agent_express_set (line 39592) | def taobao_train_agent_express_set(
    method taobao_train_agent_bookticket_confirm_vtwo (line 39625) | def taobao_train_agent_bookticket_confirm_vtwo(
    method taobao_train_agent_change_agree_vtwo (line 39698) | def taobao_train_agent_change_agree_vtwo(
    method taobao_train_agent_express_set_vtwo (line 39717) | def taobao_train_agent_express_set_vtwo(
    method taobao_train_agent_autorefund_refundfee_vtwo (line 39750) | def taobao_train_agent_autorefund_refundfee_vtwo(
    method taobao_train_agent_bookorders_get_vtwo (line 39801) | def taobao_train_agent_bookorders_get_vtwo(
    method taobao_train_agent_changeorders_get_vtwo (line 39819) | def taobao_train_agent_changeorders_get_vtwo(
    method taobao_train_agent_change_get_vtwo (line 39837) | def taobao_train_agent_change_get_vtwo(
    method taobao_train_agent_returnorders_get_vtwo (line 39858) | def taobao_train_agent_returnorders_get_vtwo(
    method taobao_train_agent_change_refuse_vtwo (line 39879) | def taobao_train_agent_change_refuse_vtwo(
    method taobao_train_agent_unhandleticket_confirm_vtwo (line 39898) | def taobao_train_agent_unhandleticket_confirm_vtwo(
    method taobao_train_agent_session_get_vtwo (line 39922) | def taobao_train_agent_session_get_vtwo(
    method taobao_train_agent_handleticket_confirm_vtwo (line 39944) | def taobao_train_agent_handleticket_confirm_vtwo(
    method taobao_train_agent_order_get_vtwo (line 39968) | def taobao_train_agent_order_get_vtwo(
    method taobao_train_agent_returnticket_confirm_vtwo (line 39989) | def taobao_train_agent_returnticket_confirm_vtwo(
    method taobao_train_agent_tostation_confirm (line 40025) | def taobao_train_agent_tostation_confirm(
    method taobao_train_agent_tostation_receive (line 40046) | def taobao_train_agent_tostation_receive(
    method taobao_train_agent_holdseat_confirm (line 40067) | def taobao_train_agent_holdseat_confirm(
  class TbTAE (line 40085) | class TbTAE(DingTalkBaseAPI):
    method taobao_tae_item_detail_get (line 40090) | def taobao_tae_item_detail_get(
    method taobao_tae_items_list (line 40115) | def taobao_tae_items_list(
    method taobao_tae_delivery_item_add (line 40140) | def taobao_tae_delivery_item_add(
    method taobao_tae_delivery_item_update (line 40159) | def taobao_tae_delivery_item_update(
    method taobao_tae_delivery_item_delete (line 40177) | def taobao_tae_delivery_item_delete(
    method taobao_tae_exist_shop_coupon_get (line 40195) | def taobao_tae_exist_shop_coupon_get(
    method taobao_tae_delivery_get (line 40215) | def taobao_tae_delivery_get(
  class TbTanx (line 40234) | class TbTanx(DingTalkBaseAPI):
    method taobao_tanx_creative_get (line 40239) | def taobao_tanx_creative_get(
    method taobao_tanx_creatives_get (line 40265) | def taobao_tanx_creatives_get(
    method taobao_tanx_creative_add (line 40297) | def taobao_tanx_creative_add(
    method taobao_tanx_deal_get (line 40341) | def taobao_tanx_deal_get(
    method taobao_tanx_deals_get (line 40367) | def taobao_tanx_deals_get(
    method taobao_tanx_qualification_picture_upload (line 40400) | def taobao_tanx_qualification_picture_upload(
    method taobao_tanx_qualification_advertiser_add (line 40426) | def taobao_tanx_qualification_advertiser_add(
    method taobao_tanx_qualification_add (line 40453) | def taobao_tanx_qualification_add(
    method taobao_tanx_qualification_find (line 40480) | def taobao_tanx_qualification_find(
    method taobao_tanx_qualification_modify (line 40512) | def taobao_tanx_qualification_modify(
    method taobao_tanx_qualification_solid_find (line 40540) | def taobao_tanx_qualification_solid_find(
    method taobao_tanx_biddingrefuses_get (line 40576) | def taobao_tanx_biddingrefuses_get(
    method taobao_tanx_audit_depositcreative_add (line 40609) | def taobao_tanx_audit_depositcreative_add(
    method taobao_tanx_audit_creative_add (line 40635) | def taobao_tanx_audit_creative_add(
    method taobao_tanx_nativetemplates_get (line 40661) | def taobao_tanx_nativetemplates_get(
    method taobao_tanx_audit_creative_modify (line 40688) | def taobao_tanx_audit_creative_modify(
  class TbShouTaoKaiFang (line 40712) | class TbShouTaoKaiFang(DingTalkBaseAPI):
    method taobao_weitao_feed_isrelation (line 40717) | def taobao_weitao_feed_isrelation(
    method taobao_wireless_bunting_item_shorturl_create (line 40738) | def taobao_wireless_bunting_item_shorturl_create(
    method taobao_wireless_bunting_shop_shorturl_create (line 40757) | def taobao_wireless_bunting_shop_shorturl_create(
    method taobao_oauth_code_create (line 40775) | def taobao_oauth_code_create(
    method alibaba_interact_sensor_social (line 40794) | def alibaba_interact_sensor_social(
    method alibaba_interact_sensor_trade (line 40812) | def alibaba_interact_sensor_trade(
    method alibaba_interact_lotteryactivity_register (line 40830) | def alibaba_interact_lotteryactivity_register(
    method alibaba_interact_allsparkisv_draw (line 40848) | def alibaba_interact_allsparkisv_draw(
    method alibaba_kds_isv_activitylist (line 40870) | def alibaba_kds_isv_activitylist(
    method alibaba_interact_aopdata_register (line 40886) | def alibaba_interact_aopdata_register(
    method alibaba_interact_sensor_trade_buy (line 40904) | def alibaba_interact_sensor_trade_buy(
    method alibaba_interact_media_artwork (line 40922) | def alibaba_interact_media_artwork(
    method alibaba_interact_media_audio (line 40940) | def alibaba_interact_media_audio(
    method alibaba_interact_sensor_ar (line 40958) | def alibaba_interact_sensor_ar(
    method alibaba_interact_fairyland_mediasave (line 40978) | def alibaba_interact_fairyland_mediasave(
    method alibaba_interact_fairyland_mediatoken (line 40994) | def alibaba_interact_fairyland_mediatoken(
    method alibaba_interact_fairyland_mediamylist (line 41015) | def alibaba_interact_fairyland_mediamylist(
  class TbJAE (line 41032) | class TbJAE(DingTalkBaseAPI):
    method taobao_aplatform_weakget (line 41037) | def taobao_aplatform_weakget(
  class TbBaoDian (line 41059) | class TbBaoDian(DingTalkBaseAPI):
    method taobao_baodian_deposit_get (line 41064) | def taobao_baodian_deposit_get(
    method taobao_baodian_common_consume (line 41078) | def taobao_baodian_common_consume(
    method taobao_deg_applogic_msg_device_bind (line 41114) | def taobao_deg_applogic_msg_device_bind(
    method taobao_baodian_server_date_get (line 41137) | def taobao_baodian_server_date_get(
    method taobao_deg_gateway_data_report (line 41151) | def taobao_deg_gateway_data_report(
    method taobao_deg_applogic_user_feedback_add (line 41182) | def taobao_deg_applogic_user_feedback_add(
    method taobao_deg_applogic_user_encrypt (line 41224) | def taobao_deg_applogic_user_encrypt(
    method taobao_deg_applogic_user_info_get (line 41247) | def taobao_deg_applogic_user_info_get(
    method taobao_baodian_server_sdk_config_get (line 41262) | def taobao_baodian_server_sdk_config_get(
    method taobao_baodian_loan_cancel (line 41289) | def taobao_baodian_loan_cancel(
    method taobao_baodian_topservice_openloanservice (line 41304) | def taobao_baodian_topservice_openloanservice(
    method taobao_baodian_topservice_sendloadauthcode (line 41318) | def taobao_baodian_topservice_sendloadauthcode(
    method taobao_baodian_topservice_checkauthcode (line 41332) | def taobao_baodian_topservice_checkauthcode(
    method taobao_baodian_chage_consume_promotion_get (line 41351) | def taobao_baodian_chage_consume_promotion_get(
    method taobao_deg_user_gamegift_query (line 41372) | def taobao_deg_user_gamegift_query(
    method taobao_deg_gamegift_record_mark (line 41394) | def taobao_deg_gamegift_record_mark(
    method taobao_baodian_deposit_new_get (line 41418) | def taobao_baodian_deposit_new_get(
    method taobao_baodian_deposit_get_with_sdkversion (line 41439) | def taobao_baodian_deposit_get_with_sdkversion(
  class TbJAEZuJian (line 41464) | class TbJAEZuJian(DingTalkBaseAPI):
    method taobao_jae_client_camera_takephoto (line 41469) | def taobao_jae_client_camera_takephoto(
    method taobao_jae_client_relation_showfollowbutton (line 41485) | def taobao_jae_client_relation_showfollowbutton(
    method taobao_jae_client_sharing_showsharingmenu (line 41500) | def taobao_jae_client_sharing_showsharingmenu(
    method taobao_jae_client_context_getnetworkstatus (line 41529) | def taobao_jae_client_context_getnetworkstatus(
  class TbTianMaoHuiYuanJiFen (line 41545) | class TbTianMaoHuiYuanJiFen(DingTalkBaseAPI):
    method tmall_marketing_liuliangbao_spreadlink_create (line 41550) | def tmall_marketing_liuliangbao_spreadlink_create(
  class TbQiChePiao (line 41570) | class TbQiChePiao(DingTalkBaseAPI):
    method taobao_bus_agent_bookticket_confirm (line 41575) | def taobao_bus_agent_bookticket_confirm(
    method taobao_bus_agent_city_change (line 41593) | def taobao_bus_agent_city_change(
    method taobao_bus_refundticketprice_set (line 41613) | def taobao_bus_refundticketprice_set(
    method taobao_bus_lastplace_get (line 41632) | def taobao_bus_lastplace_get(
    method taobao_bus_busnumber_get (line 41650) | def taobao_bus_busnumber_get(
    method taobao_bus_seatprice_get (line 41668) | def taobao_bus_seatprice_get(
    method taobao_bus_order_set (line 41686) | def taobao_bus_order_set(
    method taobao_bus_city_get (line 41704) | def taobao_bus_city_get(
    method taobao_bus_ticket_set (line 41717) | def taobao_bus_ticket_set(
    method taobao_bus_cancleorder_set (line 41735) | def taobao_bus_cancleorder_set(
    method taobao_bus_order_get (line 41752) | def taobao_bus_order_get(
    method taobao_bus_busnumber_set (line 41770) | def taobao_bus_busnumber_set(
    method taobao_bus_tvmcreateorder_set (line 41790) | def taobao_bus_tvmcreateorder_set(
    method taobao_bus_disableqrcode_set (line 41808) | def taobao_bus_disableqrcode_set(
    method taobao_bus_tvmpayorder_set (line 41826) | def taobao_bus_tvmpayorder_set(
    method taobao_bus_tvmqueryorder_get (line 41847) | def taobao_bus_tvmqueryorder_get(
    method taobao_bus_tvmbookorder_set (line 41865) | def taobao_bus_tvmbookorder_set(
    method taobao_bus_tvmcancelorder_set (line 41904) | def taobao_bus_tvmcancelorder_set(
    method taobao_bus_tvmcreateqrcode_set (line 41922) | def taobao_bus_tvmcreateqrcode_set(
    method taobao_bus_tvmrefundorder_set (line 41943) | def taobao_bus_tvmrefundorder_set(
    method taobao_bus_historyorder_get (line 41973) | def taobao_bus_historyorder_get(
    method taobao_bus_refundfee_get (line 42003) | def taobao_bus_refundfee_get(
    method taobao_bus_refund_set (line 42024) | def taobao_bus_refund_set(
    method taobao_bus_numbers_update (line 42042) | def taobao_bus_numbers_update(
    method taobao_bus_hotroute_get (line 42060) | def taobao_bus_hotroute_get(
    method taobao_bus_agent_refundticket_confirm (line 42081) | def taobao_bus_agent_refundticket_confirm(
    method taobao_bus_agent_returnticket_confirm (line 42099) | def taobao_bus_agent_returnticket_confirm(
    method taobao_bus_agent_refund_confirm (line 42117) | def taobao_bus_agent_refund_confirm(
    method taobao_bus_numbers_stockprice_update (line 42135) | def taobao_bus_numbers_stockprice_update(
  class TbMaShangTao (line 42154) | class TbMaShangTao(DingTalkBaseAPI):
    method taobao_ma_packcode_create (line 42159) | def taobao_ma_packcode_create(
    method taobao_ma_qrcode_common_create (line 42174) | def taobao_ma_qrcode_common_create(
    method taobao_wireless_xcode_create (line 42213) | def taobao_wireless_xcode_create(
  class TbYouXiJiLiPingTai (line 42239) | class TbYouXiJiLiPingTai(DingTalkBaseAPI):
    method taobao_de_activity_info_get (line 42244) | def taobao_de_activity_info_get(
    method taobao_de_activity_luckydraw (line 42263) | def taobao_de_activity_luckydraw(
    method taobao_de_activity_machineid_get (line 42311) | def taobao_de_activity_machineid_get(
    method taobao_de_activity_delivery_addr_confirm (line 42325) | def taobao_de_activity_delivery_addr_confirm(
  class TbTaoBaoChouJiangPingTai (line 42347) | class TbTaoBaoChouJiangPingTai(DingTalkBaseAPI):
    method taobao_de_activity_securitytoken_apply (line 42352) | def taobao_de_activity_securitytoken_apply(
  class TbTianMaoGuoJi (line 42371) | class TbTianMaoGuoJi(DingTalkBaseAPI):
    method tmall_hk_clearance_get (line 42376) | def tmall_hk_clearance_get(
    method tmall_traceplatform_ccic_tracecode_check (line 42397) | def tmall_traceplatform_ccic_tracecode_check(
    method tmall_traceplatform_awdc_info_upload (line 42418) | def tmall_traceplatform_awdc_info_upload(
    method tmall_traceplatform_cts_info_upload (line 42436) | def tmall_traceplatform_cts_info_upload(
    method tmall_traceplatform_cts_order_stop (line 42454) | def tmall_traceplatform_cts_order_stop(
  class TbSiFaPaiMai (line 42473) | class TbSiFaPaiMai(DingTalkBaseAPI):
    method taobao_auction_gov_get_latestbid (line 42478) | def taobao_auction_gov_get_latestbid(
    method taobao_auction_gov_data_realtime_get (line 42501) | def taobao_auction_gov_data_realtime_get(
    method taobao_auction_gov_data_monthly_get (line 42523) | def taobao_auction_gov_data_monthly_get(
    method taobao_auction_gov_data_annually_get (line 42555) | def taobao_auction_gov_data_annually_get(
    method taobao_auction_gov_data_topn_get (line 42587) | def taobao_auction_gov_data_topn_get(
  class TbXiaMi (line 42619) | class TbXiaMi(DingTalkBaseAPI):
    method alibaba_xiami_api_radio_info (line 42624) | def alibaba_xiami_api_radio_info(
    method alibaba_xiami_api_radio_songs_get (line 42638) | def alibaba_xiami_api_radio_songs_get(
    method alibaba_xiami_api_contract_gift_send (line 42663) | def alibaba_xiami_api_contract_gift_send(
    method alibaba_xiami_api_contract_issign (line 42696) | def alibaba_xiami_api_contract_issign(
    method alibaba_xiami_api_contract_sign (line 42709) | def alibaba_xiami_api_contract_sign(
    method alibaba_xiami_api_collect_recommend_get (line 42723) | def alibaba_xiami_api_collect_recommend_get(
    method alibaba_xiami_api_radio_myself_get (line 42750) | def alibaba_xiami_api_radio_myself_get(
    method alibaba_xiami_api_radio_guess_get (line 42768) | def alibaba_xiami_api_radio_guess_get(
    method alibaba_xiami_api_radio_promotions_get (line 42786) | def alibaba_xiami_api_radio_promotions_get(
    method alibaba_xiami_api_rank_newAlbum_get (line 42808) | def alibaba_xiami_api_rank_newAlbum_get(
    method alibaba_xiami_api_rank_songs_get (line 42832) | def alibaba_xiami_api_rank_songs_get(
    method alibaba_xiami_api_recommend_dailySongs_get (line 42851) | def alibaba_xiami_api_recommend_dailySongs_get(
    method alibaba_xiami_api_member_account_get (line 42872) | def alibaba_xiami_api_member_account_get(
    method alibaba_xiami_api_library_songs_get (line 42885) | def alibaba_xiami_api_library_songs_get(
    method alibaba_xiami_api_song_detail_get (line 42909) | def alibaba_xiami_api_song_detail_get(
    method alibaba_xiami_api_album_detail_get (line 42922) | def alibaba_xiami_api_album_detail_get(
    method alibaba_xiami_api_collect_detail_get (line 42943) | def alibaba_xiami_api_collect_detail_get(
    method alibaba_xiami_api_artist_detail_get (line 42967) | def alibaba_xiami_api_artist_detail_get(
    method alibaba_xiami_api_artist_hotSongs_get (line 42988) | def alibaba_xiami_api_artist_hotSongs_get(
    method alibaba_xiami_api_artist_albums_get (line 43006) | def alibaba_xiami_api_artist_albums_get(
    method alibaba_xiami_api_artist_promotions_get (line 43030) | def alibaba_xiami_api_artist_promotions_get(
    method alibaba_xiami_api_rank_index_get (line 43051) | def alibaba_xiami_api_rank_index_get(
    method alibaba_xiami_api_rank_newAlbums_get (line 43064) | def alibaba_xiami_api_rank_newAlbums_get(
    method alibaba_xiami_api_song_songsByTag_get (line 43085) | def alibaba_xiami_api_song_songsByTag_get(
    method alibaba_xiami_api_artist_wordbook_get (line 43109) | def alibaba_xiami_api_artist_wordbook_get(
    method alibaba_xiami_api_artist_similar_get (line 43133) | def alibaba_xiami_api_artist_similar_get(
    method alibaba_xiami_api_library_collects_get (line 43155) | def alibaba_xiami_api_library_collects_get(
    method alibaba_xiami_api_library_song_add (line 43179) | def alibaba_xiami_api_library_song_add(
    method alibaba_xiami_api_library_song_remove (line 43197) | def alibaba_xiami_api_library_song_remove(
    method alibaba_xiami_api_library_albums_get (line 43216) | def alibaba_xiami_api_library_albums_get(
    method alibaba_xiami_api_song_similar_get (line 43237) | def alibaba_xiami_api_song_similar_get(
    method alibaba_xiami_api_tag_tags (line 43259) | def alibaba_xiami_api_tag_tags(
    method alibaba_xiami_api_tag_genre_album_get (line 43272) | def alibaba_xiami_api_tag_genre_album_get(
    method alibaba_xiami_api_tag_genre_artist_get (line 43299) | def alibaba_xiami_api_tag_genre_artist_get(
    method alibaba_xiami_api_tag_genre_song_get (line 43326) | def alibaba_xiami_api_tag_genre_song_get(
    method alibaba_xiami_api_comment_collect_get (line 43353) | def alibaba_xiami_api_comment_collect_get(
    method alibaba_xiami_api_comment_album_get (line 43377) | def alibaba_xiami_api_comment_album_get(
    method alibaba_xiami_api_comment_song_get (line 43401) | def alibaba_xiami_api_comment_song_get(
    method alibaba_xiami_api_rank_weekhotalbums_get (line 43425) | def alibaba_xiami_api_rank_weekhotalbums_get(
    method alibaba_xiami_api_comment_artist_get (line 43450) | def alibaba_xiami_api_comment_artist_get(
    method alibaba_xiami_api_rank_promotion_albums_get (line 43474) | def alibaba_xiami_api_rank_promotion_albums_get(
    method alibaba_xiami_api_tag_genrelist_get (line 43498) | def alibaba_xiami_api_tag_genrelist_get(
    method alibaba_xiami_api_rank_music_detail_get (line 43511) | def alibaba_xiami_api_rank_music_detail_get(
    method alibaba_xiami_api_rank_music_list_get (line 43535) | def alibaba_xiami_api_rank_music_list_get(
    method alibaba_xiami_api_dongting_headset_isbind_get (line 43556) | def alibaba_xiami_api_dongting_headset_isbind_get(
    method alibaba_xiami_api_radio_detail_get (line 43576) | def alibaba_xiami_api_radio_detail_get(
    method alibaba_xiami_api_search_hotwords_get (line 43606) | def alibaba_xiami_api_search_hotwords_get(
    method alibaba_xiami_api_banner_get (line 43624) | def alibaba_xiami_api_banner_get(
    method alibaba_xiami_api_music_scene_get (line 43637) | def alibaba_xiami_api_music_scene_get(
    method alibaba_xiami_api_radio_musicdetail_get (line 43650) | def alibaba_xiami_api_radio_musicdetail_get(
    method alibaba_xiami_api_mobile_configure_get (line 43678) | def alibaba_xiami_api_mobile_configure_get(
    method alibaba_xiami_api_mv_detail_get (line 43694) | def alibaba_xiami_api_mv_detail_get(
    method alibaba_xiami_api_mv_musiclist_get (line 43713) | def alibaba_xiami_api_mv_musiclist_get(
    method alibaba_xiami_api_artist_musiclist_get (line 43740) | def alibaba_xiami_api_artist_musiclist_get(
    method alibaba_xiami_api_search_letter_get (line 43761) | def alibaba_xiami_api_search_letter_get(
    method alibaba_xiami_api_mobile_splashimage_get (line 43779) | def alibaba_xiami_api_mobile_splashimage_get(
    method alibaba_xiami_api_mobile_figureimage_get (line 43804) | def alibaba_xiami_api_mobile_figureimage_get(
    method alibaba_xiami_api_playlog_add (line 43834) | def alibaba_xiami_api_playlog_add(
    method alibaba_alimusic_operator_unicom_gettelandstatus (line 43866) | def alibaba_alimusic_operator_unicom_gettelandstatus(
    method alibaba_music_search_songs_get (line 43887) | def alibaba_music_search_songs_get(
    method alibaba_music_search_artist_get (line 43914) | def alibaba_music_search_artist_get(
    method alibaba_xiami_api_rank_detail_get (line 43941) | def alibaba_xiami_api_rank_detail_get(
  class TbTianMaoHuDongJieKou (line 43963) | class TbTianMaoHuDongJieKou(DingTalkBaseAPI):
    method alibaba_interact_sensor_gravity (line 43968) | def alibaba_interact_sensor_gravity(
    method alibaba_interact_sensor_gyro (line 43981) | def alibaba_interact_sensor_gyro(
    method alibaba_interact_sensor_gps (line 43994) | def alibaba_interact_sensor_gps(
    method alibaba_interact_sensor_contacts (line 44007) | def alibaba_interact_sensor_contacts(
    method alibaba_interact_sensor_shake (line 44020) | def alibaba_interact_sensor_shake(
    method alibaba_interact_sensor_blow (line 44032) | def alibaba_interact_sensor_blow(
    method alibaba_interact_sensor_networkstatus (line 44045) | def alibaba_interact_sensor_networkstatus(
    method alibaba_interact_sensor_authorize (line 44058) | def alibaba_interact_sensor_authorize(
    method alibaba_interact_sensor_login (line 44070) | def alibaba_interact_sensor_login(
    method alibaba_interact_sensor_share (line 44082) | def alibaba_interact_sensor_share(
    method alibaba_interact_sensor_titlebarhide (line 44095) | def alibaba_interact_sensor_titlebarhide(
    method alibaba_interact_sensor_takephoto (line 44107) | def alibaba_interact_sensor_takephoto(
    method alibaba_interact_isvadmin_bind (line 44120) | def alibaba_interact_isvadmin_bind(
    method alibaba_interact_isvadmin_getpondbyinteract (line 44150) | def alibaba_interact_isvadmin_getpondbyinteract(
    method alibaba_interact_isvlottery_idraw (line 44167) | def alibaba_interact_isvlottery_idraw(
    method alibaba_interact_isvdata_savescore (line 44190) | def alibaba_interact_isvdata_savescore(
    method alibaba_interact_isvdata_queryscore (line 44212) | def alibaba_interact_isvdata_queryscore(
    method alibaba_interact_isvadmin_allponds (line 44231) | def alibaba_interact_isvadmin_allponds(
    method alibaba_interact_sensor_calendar (line 44243) | def alibaba_interact_sensor_calendar(
    method alibaba_interact_sensor_toast (line 44256) | def alibaba_interact_sensor_toast(
    method alibaba_interact_sensor_openwindow (line 44269) | def alibaba_interact_sensor_openwindow(
    method alibaba_interact_sensor_vibrate (line 44281) | def alibaba_interact_sensor_vibrate(
    method alibaba_interact_sensor_audio (line 44293) | def alibaba_interact_sensor_audio(
    method alibaba_interact_activity_register (line 44306) | def alibaba_interact_activity_register(
    method alibaba_interact_activity_unregister (line 44346) | def alibaba_interact_activity_unregister(
    method alibaba_interact_sensor_popwindow (line 44365) | def alibaba_interact_sensor_popwindow(
    method alibaba_interact_sensor_gcanvas (line 44377) | def alibaba_interact_sensor_gcanvas(
    method alibaba_interact_sensor_gmedia (line 44390) | def alibaba_interact_sensor_gmedia(
    method alibaba_interact_sensor_gutil (line 44403) | def alibaba_interact_sensor_gutil(
    method alibaba_interact_sensor_glue (line 44415) | def alibaba_interact_sensor_glue(
    method alibaba_interact_isvadmin_getinteractbysellernick (line 44427) | def alibaba_interact_isvadmin_getinteractbysellernick(
    method alibaba_interact_isv_gateway (line 44439) | def alibaba_interact_isv_gateway(
    method alibaba_interact_sensor_ma (line 44453) | def alibaba_interact_sensor_ma(
    method alibaba_interact_sensor_taocalendar (line 44465) | def alibaba_interact_sensor_taocalendar(
    method alibaba_interact_coin_buyer_add (line 44478) | def alibaba_interact_coin_buyer_add(
    method alibaba_interact_sensor_wangwang (line 44491) | def alibaba_interact_sensor_wangwang(
    method alibaba_interact_sensor_makeup (line 44504) | def alibaba_interact_sensor_makeup(
    method taobao_weitao_feed_synchronize (line 44517) | def taobao_weitao_feed_synchronize(
    method taobao_smartisan_activitycode_create (line 44552) | def taobao_smartisan_activitycode_create(
    method alibaba_interact_onecode_issue (line 44580) | def alibaba_interact_onecode_issue(
    method alibaba_interact_ump_meal_query (line 44593) | def alibaba_interact_ump_meal_query(
    method alibaba_interact_sensor_favorites (line 44607) | def alibaba_interact_sensor_favorites(
    method alibaba_interact_current_mixusernick (line 44621) | def alibaba_interact_current_mixusernick(
    method alibaba_interact_shop_favor (line 44634) | def alibaba_interact_shop_favor(
    method alibaba_interact_activity_apply (line 44647) | def alibaba_interact_activity_apply(
    method alibaba_interact_activity_pushtoalicom (line 44683) | def alibaba_interact_activity_pushtoalicom(
    method taobao_weitao_feed_cancel (line 44705) | def taobao_weitao_feed_cancel(
    method taobao_weitao_feed_synchronize_new (line 44730) | def taobao_weitao_feed_synchronize_new(
    method alibaba_interact_wireless_draw (line 44769) | def alibaba_interact_wireless_draw(
    method alibaba_interact_activity_addcomment (line 44782) | def alibaba_interact_activity_addcomment(
    method alibaba_interact_isvlottery_isvdraw (line 44806) | def alibaba_interact_isvlottery_isvdraw(
    method alibaba_interact_login_alipayauth (line 44820) | def alibaba_interact_login_alipayauth(
    method taobao_mixnick_wetoplay (line 44832) | def taobao_mixnick_wetoplay(
    method alibaba_interact_coupon_apply (line 44854) | def alibaba_interact_coupon_apply(
    method alibaba_interact_common_model_push (line 44868) | def alibaba_interact_common_model_push(
    method taobao_mixnick_playtowe (line 44911) | def taobao_mixnick_playtowe(
    method tmall_interact_isvlottery_draw (line 44930) | def tmall_interact_isvlottery_draw(
    method alibaba_interact_isvlottery_mdraw (line 44960) | def alibaba_interact_isvlottery_mdraw(
    method alibaba_interact_user_islogin (line 44975) | def alibaba_interact_user_islogin(
    method alibaba_interact_open_isattention (line 44993) | def alibaba_interact_open_isattention(
    method alibaba_interact_benefit_idraw (line 45010) | def alibaba_interact_benefit_idraw(
    method alibaba_interact_open_yt_draw (line 45026) | def alibaba_interact_open_yt_draw(
  class TbDMP (line 45057) | class TbDMP(DingTalkBaseAPI):
    method taobao_dmp_crowd_add (line 45062) | def taobao_dmp_crowd_add(
    method taobao_dmp_tags_get (line 45090) | def taobao_dmp_tags_get(
    method taobao_dmp_analysis_count_get (line 45103) | def taobao_dmp_analysis_count_get(
    method taobao_dmp_crowds_get (line 45123) | def taobao_dmp_crowds_get(
    method taobao_dmp_crowd_name_get (line 45136) | def taobao_dmp_crowd_name_get(
    method taobao_dmp_topapp_isorder (line 45156) | def taobao_dmp_topapp_isorder(
    method taobao_dmp_tag_get (line 45176) | def taobao_dmp_tag_get(
    method taobao_dmp_crowd_remove (line 45194) | def taobao_dmp_crowd_remove(
    method taobao_dmp_crowd_create (line 45212) | def taobao_dmp_crowd_create(
    method taobao_dmp_crowds_find (line 45238) | def taobao_dmp_crowds_find(
    method taobao_dmp_analysis_coverage (line 45255) | def taobao_dmp_analysis_coverage(
    method taobao_dmp_tag_find (line 45272) | def taobao_dmp_tag_find(
    method taobao_dmp_tag_option_find (line 45290) | def taobao_dmp_tag_option_find(
    method taobao_dmp_user_zuanshi_valid_check (line 45323) | def taobao_dmp_user_zuanshi_valid_check(
  class TbShengHuoFuWu (line 45337) | class TbShengHuoFuWu(DingTalkBaseAPI):
    method taobao_place_private_poi_list (line 45342) | def taobao_place_private_poi_list(
  class TbShouJiTaoBao (line 45362) | class TbShouJiTaoBao(DingTalkBaseAPI):
    method taobao_mtop_upload_token_get (line 45367) | def taobao_mtop_upload_token_get(
  class TbWuLian (line 45386) | class TbWuLian(DingTalkBaseAPI):
    method aliyun_alink_opendata_url_query (line 45391) | def aliyun_alink_opendata_url_query(
    method alibaba_alink_device_bind (line 45418) | def alibaba_alink_device_bind(
    method alibaba_alink_device_detail_get (line 45436) | def alibaba_alink_device_detail_get(
    method alibaba_alink_message_config_set (line 45454) | def alibaba_alink_message_config_set(
    method alibaba_alink_message_config_list (line 45475) | def alibaba_alink_message_config_list(
    method alibaba_alink_message_history_count (line 45488) | def alibaba_alink_message_history_count(
    method alibaba_alink_message_history_list (line 45520) | def alibaba_alink_message_history_list(
    method alibaba_alink_device_info_update (line 45552) | def alibaba_alink_device_info_update(
    method alibaba_alink_device_unbind (line 45572) | def alibaba_alink_device_unbind(
    method aliyun_alink_data_stat_report (line 45590) | def aliyun_alink_data_stat_report(
    method alibaba_alink_device_unify_status_set (line 45608) | def alibaba_alink_device_unify_status_set(
    method alibaba_alink_device_unify_status_get (line 45629) | def alibaba_alink_device_unify_status_get(
  class TbHangLv (line 45648) | class TbHangLv(DingTalkBaseAPI):
    method alitrip_btrip_flightorder_get (line 45653) | def alitrip_btrip_flightorder_get(
  class TbJiuDianDaoGou (line 45680) | class TbJiuDianDaoGou(DingTalkBaseAPI):
    method taobao_xhotel_city_get (line 45685) | def taobao_xhotel_city_get(
    method taobao_xhotel_list_search (line 45706) | def taobao_xhotel_list_search(
    method taobao_xhotel_price_info_get (line 45771) | def taobao_xhotel_price_info_get(
    method taobao_xhotel_info_list_get (line 45798) | def taobao_xhotel_info_list_get(
    method alitrip_hotel_search_list_get (line 45828) | def alitrip_hotel_search_list_get(
    method alitrip_hotel_detail_info_get (line 45845) | def alitrip_hotel_detail_info_get(
    method alitrip_hotel_search_citysuggest_get (line 45863) | def alitrip_hotel_search_citysuggest_get(
    method alitrip_hotel_hotelimageshow_get (line 45883) | def alitrip_hotel_hotelimageshow_get(
    method alitrip_hotel_detail_staticinfo_get (line 45901) | def alitrip_hotel_detail_staticinfo_get(
    method alitrip_hotel_detail_package_get (line 45919) | def alitrip_hotel_detail_package_get(
    method alitrip_hotel_rate_getmixratelist_get (line 45945) | def alitrip_hotel_rate_getmixratelist_get(
  class TbBaoXian (line 45963) | class TbBaoXian(DingTalkBaseAPI):
    method alipay_baoxian_claim_uploadattachment (line 45968) | def alipay_baoxian_claim_uploadattachment(
    method alipay_baoxian_claim_update (line 46008) | def alipay_baoxian_claim_update(
    method alipay_baoxian_claim_returngoodsstatus_update (line 46053) | def alipay_baoxian_claim_returngoodsstatus_update(
    method alipay_baoxian_claim_survey_conclusion_submit (line 46073) | def alipay_baoxian_claim_survey_conclusion_submit(
  class TbYiYaoGuan (line 46092) | class TbYiYaoGuan(DingTalkBaseAPI):
    method tmall_yao_piats_check (line 46097) | def tmall_yao_piats_check(
  class TbTianMaoMeiZhuang (line 46120) | class TbTianMaoMeiZhuang(DingTalkBaseAPI):
    method tmall_mei_crm_member_sync (line 46125) | def tmall_mei_crm_member_sync(
    method tmall_mei_crm_callback_point_change (line 46164) | def tmall_mei_crm_callback_point_change(
    method tmall_crm_member_front_unbind (line 46198) | def tmall_crm_member_front_unbind(
    method tmall_crm_member_point_change (line 46217) | def tmall_crm_member_point_change(
    method tmall_mei_crm_member_getbypaycode (line 46248) | def tmall_mei_crm_member_getbypaycode(
  class TbDianZiMianDan (line 46267) | class TbDianZiMianDan(DingTalkBaseAPI):
    method taobao_wlb_waybill_i_get (line 46272) | def taobao_wlb_waybill_i_get(
    method taobao_wlb_waybill_i_search (line 46291) | def taobao_wlb_waybill_i_search(
    method taobao_wlb_waybill_i_fullupdate (line 46310) | def taobao_wlb_waybill_i_fullupdate(
    method taobao_wlb_waybill_i_print (line 46329) | def taobao_wlb_waybill_i_print(
    method taobao_wlb_waybill_i_querydetail (line 46348) | def taobao_wlb_waybill_i_querydetail(
    method taobao_wlb_waybill_i_cancel (line 46366) | def taobao_wlb_waybill_i_cancel(
    method taobao_wlb_waybill_i_product (line 46385) | def taobao_wlb_waybill_i_product(
    method cainiao_cloudprint_stdtemplates_get (line 46404) | def cainiao_cloudprint_stdtemplates_get(
    method cainiao_cloudprint_mystdtemplates_get (line 46417) | def cainiao_cloudprint_mystdtemplates_get(
    method cainiao_waybill_ii_product (line 46430) | def cainiao_waybill_ii_product(
    method cainiao_waybill_ii_cancel (line 46449) | def cainiao_waybill_ii_cancel(
    method cainiao_cloudprint_customares_get (line 46471) | def cainiao_cloudprint_customares_get(
    method cainiao_waybill_ii_get (line 46489) | def cainiao_waybill_ii_get(
    method cainiao_waybill_ii_update (line 46508) | def cainiao_waybill_ii_update(
    method cainiao_cloudprint_clientinfo_put (line 46526) | def cainiao_cloudprint_clientinfo_put(
    method cainiao_waybill_ii_query_by_tradecode (line 46543) | def cainiao_waybill_ii_query_by_tradecode(
    method cainiao_waybill_ii_query_by_waybillcode (line 46562) | def cainiao_waybill_ii_query_by_waybillcode(
    method cainiao_cloudprint_isvtemplates_get (line 46581) | def cainiao_cloudprint_isvtemplates_get(
    method cainiao_waybill_ii_search (line 46593) | def cainiao_waybill_ii_search(
    method cainiao_cloudprint_isv_resources_get (line 46612) | def cainiao_cloudprint_isv_resources_get(
    method cainiao_openstorage_isv_resource_create (line 46630) | def cainiao_openstorage_isv_resource_create(
    method cainiao_openstorage_resource_update (line 46649) | def cainiao_openstorage_resource_update(
    method cainiao_openstorage_isv_resources_get (line 46669) | def cainiao_openstorage_isv_resources_get(
    method cainiao_openstorage_seller_resource_create (line 46689) | def cainiao_openstorage_seller_resource_create(
    method cainiao_openstorage_resource_publish (line 46709) | def cainiao_openstorage_resource_publish(
    method cainiao_cloudprint_templates_migrate (line 46729) | def cainiao_cloudprint_templates_migrate(
    method cainiao_cloudprint_customarea_update (line 46752) | def cainiao_cloudprint_customarea_update(
    method cainiao_openstorage_seller_resourcedetail_get (line 46775) | def cainiao_openstorage_
Condensed preview — 89 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,372K chars).
[
  {
    "path": ".bumpversion.cfg",
    "chars": 101,
    "preview": "[bumpversion]\nfiles = setup.py dingtalk/__init__.py\ncommit = True\ntag = True\ncurrent_version = 1.3.8\n"
  },
  {
    "path": ".gitignore",
    "chars": 1079,
    "preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packagi"
  },
  {
    "path": ".readthedocs.yml",
    "chars": 100,
    "preview": "formats:\n  - none\npython:\n  version: 3\n  pip_install: true\n  extra_requirements:\n    - cryptography\n"
  },
  {
    "path": ".travis.yml",
    "chars": 1082,
    "preview": "language: python\n\n# Use container-based infrastructure\nsudo: false\n\nmatrix:\n  include:\n    - env: TOX_ENV=py27-cryptogra"
  },
  {
    "path": "LICENSE",
    "chars": 35147,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "MANIFEST.in",
    "chars": 42,
    "preview": "include README.md\ninclude requirements.txt"
  },
  {
    "path": "README.rst",
    "chars": 1112,
    "preview": "#######################\nDingTalk Sdk for Python\n#######################\n.. image:: https://travis-ci.org/007gzs/dingtalk"
  },
  {
    "path": "dev-requirements.txt",
    "chars": 45,
    "preview": "-r requirements.txt\npytest\nredis\npymemcache\n\n"
  },
  {
    "path": "dingtalk/__init__.py",
    "chars": 609,
    "preview": "from __future__ import absolute_import, unicode_literals\n\nimport logging\n\nfrom dingtalk.client import SecretClient, AppK"
  },
  {
    "path": "dingtalk/client/__init__.py",
    "chars": 5079,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport logging\n\nimport time\n\nfrom ding"
  },
  {
    "path": "dingtalk/client/api/__init__.py",
    "chars": 1150,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom dingtalk.client.api.attendance im"
  },
  {
    "path": "dingtalk/client/api/attendance.py",
    "chars": 5160,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport time\nimport datetime\n\nfrom ding"
  },
  {
    "path": "dingtalk/client/api/base.py",
    "chars": 1019,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\n\nclass DingTalkBaseAPI(object):\n\n    A"
  },
  {
    "path": "dingtalk/client/api/blackboard.py",
    "chars": 416,
    "preview": "# encoding: utf-8\r\nfrom __future__ import absolute_import, unicode_literals\r\n\r\nfrom dingtalk.client.api.base import Ding"
  },
  {
    "path": "dingtalk/client/api/bpms.py",
    "chars": 8451,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport datetime\nimport time\n\nimport si"
  },
  {
    "path": "dingtalk/client/api/calendar.py",
    "chars": 1926,
    "preview": "# encoding: utf-8\r\nfrom __future__ import absolute_import, unicode_literals\r\n\r\n\r\nfrom dingtalk.client.api.base import Di"
  },
  {
    "path": "dingtalk/client/api/callback.py",
    "chars": 2855,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom dingtalk.client.api.base import D"
  },
  {
    "path": "dingtalk/client/api/chat.py",
    "chars": 4237,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom dingtalk.client.api.base import D"
  },
  {
    "path": "dingtalk/client/api/checkin.py",
    "chars": 2536,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport time\nimport datetime\n\nimport si"
  },
  {
    "path": "dingtalk/client/api/cspace.py",
    "chars": 5144,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport six\nfrom dingtalk.core.utils im"
  },
  {
    "path": "dingtalk/client/api/department.py",
    "chars": 2905,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom dingtalk.client.api.base import D"
  },
  {
    "path": "dingtalk/client/api/employeerm.py",
    "chars": 7387,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport datetime\nimport json\n\nfrom opti"
  },
  {
    "path": "dingtalk/client/api/ext.py",
    "chars": 2292,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport six\n\nfrom dingtalk.client.api.b"
  },
  {
    "path": "dingtalk/client/api/extcontact.py",
    "chars": 4652,
    "preview": "# -*- coding: utf-8 -*-\r\nfrom __future__ import absolute_import, unicode_literals\r\n\r\nfrom dingtalk.client.api.base impor"
  },
  {
    "path": "dingtalk/client/api/health.py",
    "chars": 1854,
    "preview": "# encoding: utf-8\r\nfrom __future__ import absolute_import, unicode_literals\r\n\r\nimport datetime\r\n\r\nfrom dingtalk.client.a"
  },
  {
    "path": "dingtalk/client/api/message.py",
    "chars": 7738,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport json\n\nfrom optionaldict import "
  },
  {
    "path": "dingtalk/client/api/microapp.py",
    "chars": 3725,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom dingtalk.client.api.base import D"
  },
  {
    "path": "dingtalk/client/api/report.py",
    "chars": 3903,
    "preview": "# encoding: utf-8\r\nfrom __future__ import absolute_import, unicode_literals\r\n\r\nimport datetime\r\nimport time\r\n\r\nfrom ding"
  },
  {
    "path": "dingtalk/client/api/role.py",
    "chars": 3746,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom dingtalk.core.utils import to_tex"
  },
  {
    "path": "dingtalk/client/api/taobao.py",
    "chars": 3278113,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom dingtalk.client.api.base import D"
  },
  {
    "path": "dingtalk/client/api/user.py",
    "chars": 6121,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom dingtalk.client.api.base import D"
  },
  {
    "path": "dingtalk/client/api/workrecord.py",
    "chars": 7905,
    "preview": "# encoding: utf-8\r\nfrom __future__ import absolute_import, unicode_literals\r\n\r\nimport datetime\r\nimport time\r\n\r\nfrom opti"
  },
  {
    "path": "dingtalk/client/base.py",
    "chars": 9327,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport inspect\nimport json\nimport logg"
  },
  {
    "path": "dingtalk/client/channel.py",
    "chars": 4311,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport logging\n\nimport time\n\nfrom ding"
  },
  {
    "path": "dingtalk/client/isv.py",
    "chars": 8659,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport logging\n\nfrom dingtalk.core.uti"
  },
  {
    "path": "dingtalk/core/__init__.py",
    "chars": 81,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n"
  },
  {
    "path": "dingtalk/core/constants.py",
    "chars": 798,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom enum import Enum\n\n\nclass SuitePus"
  },
  {
    "path": "dingtalk/core/exceptions.py",
    "chars": 1788,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport six\n\nfrom dingtalk.core.utils i"
  },
  {
    "path": "dingtalk/core/utils.py",
    "chars": 2105,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport hashlib\nimport json\nimport rand"
  },
  {
    "path": "dingtalk/crypto/__init__.py",
    "chars": 3522,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\nimport time\nimport base64\nimport json\n\n"
  },
  {
    "path": "dingtalk/crypto/base.py",
    "chars": 1707,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\nimport struct\nimport socket\nimport base"
  },
  {
    "path": "dingtalk/crypto/cryptography.py",
    "chars": 739,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\nfrom cryptography.hazmat.primitives.cip"
  },
  {
    "path": "dingtalk/crypto/pkcs7.py",
    "chars": 680,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\nfrom dingtalk.core.utils import to_bina"
  },
  {
    "path": "dingtalk/crypto/pycrypto.py",
    "chars": 396,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\nfrom Crypto.Cipher import AES\n\n\nclass D"
  },
  {
    "path": "dingtalk/model/__init__.py",
    "chars": 81,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n"
  },
  {
    "path": "dingtalk/model/field.py",
    "chars": 3704,
    "preview": "# encoding: utf-8\r\nfrom __future__ import absolute_import, unicode_literals\r\n\r\nimport random\r\nimport string\r\n\r\n\r\nclass F"
  },
  {
    "path": "dingtalk/model/message.py",
    "chars": 6776,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nfrom dingtalk.core.utils import to_tex"
  },
  {
    "path": "dingtalk/storage/__init__.py",
    "chars": 509,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\n\nclass BaseStorage(object):\n\n    def g"
  },
  {
    "path": "dingtalk/storage/cache.py",
    "chars": 1855,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport inspect\n\nfrom dingtalk.storage "
  },
  {
    "path": "dingtalk/storage/kvstorage.py",
    "chars": 977,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport json\n\nfrom dingtalk.core.utils "
  },
  {
    "path": "dingtalk/storage/memorystorage.py",
    "chars": 789,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\n\nimport time\n\nfrom dingtalk.storage imp"
  },
  {
    "path": "docs/Makefile",
    "chars": 609,
    "preview": "# Minimal makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS    =\nSPHI"
  },
  {
    "path": "docs/changelog.rst",
    "chars": 1316,
    "preview": "Changelog\n================\n\nVersion 1.3.3\n------------------\n+ fix 创建审批bug\n\nVersion 1.3.2\n------------------\n+ 增加审批待办接口\n"
  },
  {
    "path": "docs/client/api/attendance.rst",
    "chars": 122,
    "preview": "考勤接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: Attendance\n   :members:\n   :inherited-members:"
  },
  {
    "path": "docs/client/api/blackboard.rst",
    "chars": 122,
    "preview": "公告接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: BlackBoard\n   :members:\n   :inherited-members:"
  },
  {
    "path": "docs/client/api/bpms.rst",
    "chars": 118,
    "preview": "审批流接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: Bpms\n   :members:\n   :inherited-members:\n\n\n"
  },
  {
    "path": "docs/client/api/calendar.rst",
    "chars": 120,
    "preview": "日程接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: Calendar\n   :members:\n   :inherited-members:\n\n"
  },
  {
    "path": "docs/client/api/callback.rst",
    "chars": 121,
    "preview": "回调接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: Callback\n   :members:\n   :inherited-members:\n\n"
  },
  {
    "path": "docs/client/api/chat.rst",
    "chars": 117,
    "preview": "会话接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: Chat\n   :members:\n   :inherited-members:\n\n\n"
  },
  {
    "path": "docs/client/api/checkin.rst",
    "chars": 120,
    "preview": "签到接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: Checkin\n   :members:\n   :inherited-members:\n\n\n"
  },
  {
    "path": "docs/client/api/cspace.rst",
    "chars": 119,
    "preview": "钉盘接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: Cspace\n   :members:\n   :inherited-members:\n\n\n"
  },
  {
    "path": "docs/client/api/department.rst",
    "chars": 123,
    "preview": "部门接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: Department\n   :members:\n   :inherited-members:"
  },
  {
    "path": "docs/client/api/employeerm.rst",
    "chars": 123,
    "preview": "智能人事\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: Employeerm\n   :members:\n   :inherited-members:"
  },
  {
    "path": "docs/client/api/ext.rst",
    "chars": 123,
    "preview": "外部联系人接口(废弃)\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: Ext\n   :members:\n   :inherited-members:"
  },
  {
    "path": "docs/client/api/extcontact.rst",
    "chars": 126,
    "preview": "外部联系人接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: ExtContact\n   :members:\n   :inherited-membe"
  },
  {
    "path": "docs/client/api/health.rst",
    "chars": 118,
    "preview": "健康接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: Health\n   :members:\n   :inherited-members:\n\n"
  },
  {
    "path": "docs/client/api/message.rst",
    "chars": 120,
    "preview": "消息接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: Message\n   :members:\n   :inherited-members:\n\n\n"
  },
  {
    "path": "docs/client/api/microapp.rst",
    "chars": 122,
    "preview": "微应用接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: MicroApp\n   :members:\n   :inherited-members:\n"
  },
  {
    "path": "docs/client/api/report.rst",
    "chars": 119,
    "preview": "日志接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: Report\n   :members:\n   :inherited-members:\n\n\n"
  },
  {
    "path": "docs/client/api/role.rst",
    "chars": 117,
    "preview": "角色接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: Role\n   :members:\n   :inherited-members:\n\n\n"
  },
  {
    "path": "docs/client/api/taobao.rst",
    "chars": 108,
    "preview": "淘宝接口\n===================\n\n.. automodule:: dingtalk.client.api.taobao\n   :members:\n   :inherited-members:\n\n\n\n"
  },
  {
    "path": "docs/client/api/user.rst",
    "chars": 117,
    "preview": "用户接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: User\n   :members:\n   :inherited-members:\n\n\n"
  },
  {
    "path": "docs/client/api/workrecord.rst",
    "chars": 123,
    "preview": "待办接口\n===================\n\n.. module:: dingtalk.client.api\n\n.. autoclass:: WorkRecord\n   :members:\n   :inherited-members:"
  },
  {
    "path": "docs/client/index.rst",
    "chars": 727,
    "preview": "钉钉企业内部开发接口\r\n===========================================\r\n\r\n.. module:: dingtalk.client\r\n\r\n.. autoclass:: DingTalkClient\r"
  },
  {
    "path": "docs/client/isv.rst",
    "chars": 661,
    "preview": "钉钉应用服务商(ISV)接口\n===========================================\n\n.. module:: dingtalk.client.isv\n\n.. autoclass:: ISVClient\n  "
  },
  {
    "path": "docs/conf.py",
    "chars": 5606,
    "preview": "# -*- coding: utf-8 -*-\n#\n# Configuration file for the Sphinx documentation builder.\n#\n# This file does only contain a s"
  },
  {
    "path": "docs/index.rst",
    "chars": 1777,
    "preview": ".. dingtalk-sdk documentation master file, created by\n   sphinx-quickstart on Fri May  4 11:18:22 2018.\n   You can adapt"
  },
  {
    "path": "docs/install.rst",
    "chars": 652,
    "preview": "安装与升级\n==========\n\n目前 dingtalk-sdk 支持的 Python 环境有 2.7, 3.4, 3.5, 3.6 和 pypy。\n\ndingtalk-sdk 消息加解密同时兼容 cryptography 和 PyCry"
  },
  {
    "path": "docs/model/field.rst",
    "chars": 622,
    "preview": "表单组件\n===================\n\n.. module:: dingtalk.model.field\n\n.. autoclass:: TextField\n   :members:\n   :inherited-members:"
  },
  {
    "path": "docs/model/message.rst",
    "chars": 992,
    "preview": "消息实体\n===================\n\n.. module:: dingtalk.model.message\n\n.. autoclass:: TextBody\n   :members:\n   :inherited-members"
  },
  {
    "path": "pytest.ini",
    "chars": 28,
    "preview": "[pytest]\ntestpaths = tests\n\n"
  },
  {
    "path": "requirements.txt",
    "chars": 84,
    "preview": "enum34>=1.1.4; python_version < '3.4'\nsix>=1.8.0\nrequests>=2.4.3\noptionaldict>=0.1.0"
  },
  {
    "path": "setup.cfg",
    "chars": 148,
    "preview": "[flake8]\nexclude = .svn,CVS,.bzr,.hg,.git,__pycache,.ropeproject\nmax-line-length = 120\nper-file-ignores =\n  dingtalk/cli"
  },
  {
    "path": "setup.py",
    "chars": 2742,
    "preview": "#! /usr/bin/env python\n# encoding: utf-8\n\n\n\"\"\"A setuptools based setup module.\n\nSee:\nhttps://packaging.python.org/en/lat"
  },
  {
    "path": "tests/test_crypto.py",
    "chars": 6204,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\nimport unittest\n\nimport json\n\nfrom ding"
  },
  {
    "path": "tests/test_message.py",
    "chars": 5638,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\nimport unittest\n\n\nclass MessagesTestCas"
  },
  {
    "path": "tests/test_storage.py",
    "chars": 2583,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\nimport unittest\n\n\nclass WeChatSessionTe"
  },
  {
    "path": "tests/test_utils.py",
    "chars": 645,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import, unicode_literals\nimport unittest\n\nfrom dingtalk.core.uti"
  },
  {
    "path": "tox.ini",
    "chars": 829,
    "preview": "[tox]\nenvlist = {py27,py34,py35,py36,pypy,pypy3}-{cryptography,pycrypto}\n\n[testenv]\nusedevelop = True\nbasepython =\n    p"
  }
]

About this extraction

This page contains the full source code of the 007gzs/dingtalk-sdk GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 89 files (3.3 MB), approximately 876.7k tokens, and a symbol index with 4864 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!